// Copyright (c) 2010-2014 SharpDX - Alexandre Mutel
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

//------------------------------------------------------------------------------
// <auto-generated>
//     Types declaration for SharpDX.DirectInput namespace.
//     This code was generated by a tool.
//     Date : 28/03/2015 21:51:09
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace SharpDX.DirectInput {

#pragma warning disable 282
#pragma warning disable 649
#pragma warning disable 419
#pragma warning disable 1587
#pragma warning disable 1574
    
    /// <summary>	
    /// <p>Describes a mapping of one game action to one device semantic. An array of <see cref="SharpDX.DirectInput.Action"/> structures is contained by a <see cref="SharpDX.DirectInput.ActionFormat"/> structure.</p>Syntax<pre> typedef struct _DIACTION { <see cref="System.IntPtr"/>    uAppData; DWORD       dwSemantic; DWORD       dwFlags; union { LPCTSTR lptszActionName; UINT    uResIdString; }; <see cref="System.Guid"/>        guidInstance; DWORD       dwObjID; DWORD       dwHow;	
    /// } <see cref="SharpDX.DirectInput.Action"/>, *LPDIACTION; typedef const <see cref="SharpDX.DirectInput.Action"/> *LPCDIACTION;	
    /// </pre>Members<dl> <dt>uAppData</dt> <dd>Address of an application-defined UINT value to be returned to the application by <see cref="SharpDX.DirectInput.Device.GetDeviceData"/> when the state of the control associated with the action changes. This value is returned in the uAppData member of the <see cref="SharpDX.DirectInput.ObjectData"/> structure. It is typically an identifier for the application-specific action associated with the device object, but can also be a function reference.</dd> <dt>dwSemantic</dt> <dd>For a joystick, a predefined action mapping constant for this application genre representing a virtual control or a constant for a control not defined in the genre. For a keyboard or mouse, a constant that represents a particular device object. See Action Mapping Constants.</dd> <dt>dwFlags</dt> <dd><p>Flags used to request specific attributes or processing. Can be zero or one or more of the following values.</p> <dl> <dt>DIA_APPFIXED</dt> <dd>The action cannot be remapped by DirectInput.</dd> <dt>DIA_APPMAPPED</dt> <dd>The dwObjID member is valid, and <see cref="SharpDX.DirectInput.Device.BuildActionMap"/> will not override the application-defined mapping.</dd> <dt>DIA_APPNOMAP</dt> <dd>This action is not to be mapped.</dd> <dt>DIA_FORCEFEEDBACK</dt> <dd>The action must be mapped to an actuator or trigger.</dd> <dt>DIA_NORANGE</dt> <dd>The default range is not to be set for this action. This flag can be set only for absolute axis actions.</dd> </dl></dd> <dt>lptszActionName</dt> <dd>Application-defined name of the action. This string is displayed by the device property sheet when IDirectInput8::ConfigureDevices is called.</dd> <dt>uResIdString</dt> <dd>Resource identifier for the string for this action. The module instance for this resource is specified in the hInstString member of the <see cref="SharpDX.DirectInput.ActionFormat"/> structure that contains this structure.</dd> <dt>guidInstance</dt> <dd>Device instance globally unique identifier (<see cref="System.Guid"/>) if a specific device is requested. Otherwise GUID_NULL.</dd> <dt>dwObjID</dt> <dd>Control identifier. Use the DIDFT_GETINSTANCE and DIDFT_GetType macros to retrieve the instance and type from this value.</dd> <dt>dwHow</dt> <dd><p>When the structure is returned by <see cref="SharpDX.DirectInput.Device.BuildActionMap"/>, this member receives a value to indicate the mapping mechanism used by DirectInput to configure the action. This member is ignored when the action map is passed to <see cref="SharpDX.DirectInput.Device.SetActionMap"/>. The following values are defined.</p> <dl> <dt>DIAH_APPREQUESTED</dt> <dd>The mapping was configured by the application, which specified the device (guidInstance) and device object (dwObjID) when calling <see cref="SharpDX.DirectInput.Device.BuildActionMap"/>.</dd> <dt>DIAH_DEFAULT</dt> <dd>The mapping was determined by DirectInput in the absence of other mapping information.</dd> <dt>DIAH_ERROR</dt> <dd>An error occurred. The action cannot be matched to a control on the device. The action will be ignored when the action map is set.</dd> <dt>DIAH_HWAPP</dt> <dd>The mapping was specified by the hardware manufacturer for this game.</dd> <dt>DIAH_HWDEFAULT</dt> <dd>The mapping was specified by the hardware manufacturer for this genre.</dd> <dt>DIAH_UNMAPPED</dt> <dd>No suitable device object was found.</dd> <dt>DIAH_USERCONFIG</dt> <dd>The mapping was configured by the user.</dd> </dl></dd> </dl>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW']/*"/>	
    /// <msdn-id>ee416598</msdn-id>	
    /// <unmanaged>DIACTIONW</unmanaged>	
    /// <unmanaged-short>DIACTIONW</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct Action {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW::uAppData']/*"/>	
        /// <msdn-id>ee416598</msdn-id>	
        /// <unmanaged>UINT_PTR uAppData</unmanaged>	
        /// <unmanaged-short>UINT_PTR uAppData</unmanaged-short>	
        public System.IntPtr AppData;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW::dwSemantic']/*"/>	
        /// <msdn-id>ee416598</msdn-id>	
        /// <unmanaged>unsigned int dwSemantic</unmanaged>	
        /// <unmanaged-short>unsigned int dwSemantic</unmanaged-short>	
        public int Semantic;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW::dwFlags']/*"/>	
        /// <msdn-id>ee416598</msdn-id>	
        /// <unmanaged>unsigned int dwFlags</unmanaged>	
        /// <unmanaged-short>unsigned int dwFlags</unmanaged-short>	
        public int Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW::lptszActionName']/*"/>	
        /// <msdn-id>ee416598</msdn-id>	
        /// <unmanaged>const void* lptszActionName</unmanaged>	
        /// <unmanaged-short>void lptszActionName</unmanaged-short>	
        public System.IntPtr ActionName;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW::guidInstance']/*"/>	
        /// <msdn-id>ee416598</msdn-id>	
        /// <unmanaged>GUID guidInstance</unmanaged>	
        /// <unmanaged-short>GUID guidInstance</unmanaged-short>	
        public System.Guid GuidInstance;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW::dwObjID']/*"/>	
        /// <msdn-id>ee416598</msdn-id>	
        /// <unmanaged>unsigned int dwObjID</unmanaged>	
        /// <unmanaged-short>unsigned int dwObjID</unmanaged-short>	
        public int ObjID;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONW::dwHow']/*"/>	
        /// <msdn-id>ee416598</msdn-id>	
        /// <unmanaged>unsigned int dwHow</unmanaged>	
        /// <unmanaged-short>unsigned int dwHow</unmanaged-short>	
        public int How;
    }
    
    /// <summary>	
    /// Contains information about the calling application and acts as a container for an array ofDIACTIONstructures that define action-to-control mappings for a genre.	
    /// </summary>	
    /// <remarks>	
    /// <p>The ftTimeStamp member can contain special values that apply to new and unused devices. New devices have never been enumerated for this application and have never had an action map applied to them. Unused devices have been enumerated for the application before but have never had an action map applied. New devices always have DIAFTS_NEWDEVICELOW and DIAFTS_NEWDEVICEHIGH in the low and high  DWORDs respectively of the  <see cref="long"/> structure. Unused devices have DIAFTS_UNUSEDDEVICELOW and DIAFTS_UNUSEDDEVICEHIGH in these positions.</p> <p>Applications should not use  ftTimeStamp to check for new devices. Instead, they should look for the DIEDBS_RECENTDEVICE and DIEDBS_NEWDEVICE flags in the enumeration callback. For more information, see DIEnumDevicesBySemanticsCallback.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
    /// <unmanaged>DIACTIONFORMATW</unmanaged>	
    /// <unmanaged-short>DIACTIONFORMATW</unmanaged-short>	
    internal  partial struct ActionFormat {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::dwActionSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>unsigned int dwActionSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwActionSize</unmanaged-short>	
        public int ActionSize;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::dwDataSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>unsigned int dwDataSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwDataSize</unmanaged-short>	
        public int DataSize;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::dwNumActions']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>unsigned int dwNumActions</unmanaged>	
        /// <unmanaged-short>unsigned int dwNumActions</unmanaged-short>	
        public int NumActions;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::rgoAction']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>DIACTIONW* rgoAction</unmanaged>	
        /// <unmanaged-short>DIACTIONW rgoAction</unmanaged-short>	
        public System.IntPtr RgoAction;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::guidActionMap']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>GUID guidActionMap</unmanaged>	
        /// <unmanaged-short>GUID guidActionMap</unmanaged-short>	
        public System.Guid GuidActionMap;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::dwGenre']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>unsigned int dwGenre</unmanaged>	
        /// <unmanaged-short>unsigned int dwGenre</unmanaged-short>	
        public int Genre;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::dwBufferSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>unsigned int dwBufferSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwBufferSize</unmanaged-short>	
        public int BufferSize;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::lAxisMin']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>int lAxisMin</unmanaged>	
        /// <unmanaged-short>int lAxisMin</unmanaged-short>	
        public int AxisMin;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::lAxisMax']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>int lAxisMax</unmanaged>	
        /// <unmanaged-short>int lAxisMax</unmanaged-short>	
        public int AxisMax;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::hInstString']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>HINSTANCE hInstString</unmanaged>	
        /// <unmanaged-short>HINSTANCE hInstString</unmanaged-short>	
        public System.IntPtr HInstString;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::ftTimeStamp']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>FILETIME ftTimeStamp</unmanaged>	
        /// <unmanaged-short>FILETIME ftTimeStamp</unmanaged-short>	
        public long FtTimeStamp;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::dwCRC']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>unsigned int dwCRC</unmanaged>	
        /// <unmanaged-short>unsigned int dwCRC</unmanaged-short>	
        public int CRC;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIACTIONFORMATW::tszActionMap']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diactionformat</msdn-id>	
        /// <unmanaged>wchar_t tszActionMap[260]</unmanaged>	
        /// <unmanaged-short>wchar_t tszActionMap</unmanaged-short>	
        public string ActionMap;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public int ActionSize;
            public int DataSize;
            public int NumActions;
            public System.IntPtr RgoAction;
            public System.Guid GuidActionMap;
            public int Genre;
            public int BufferSize;
            public int AxisMin;
            public int AxisMax;
            public System.IntPtr HInstString;
            public long FtTimeStamp;
            public int CRC;
            public char ActionMap;
            char __ActionMap1;
            char __ActionMap2;
            char __ActionMap3;
            char __ActionMap4;
            char __ActionMap5;
            char __ActionMap6;
            char __ActionMap7;
            char __ActionMap8;
            char __ActionMap9;
            char __ActionMap10;
            char __ActionMap11;
            char __ActionMap12;
            char __ActionMap13;
            char __ActionMap14;
            char __ActionMap15;
            char __ActionMap16;
            char __ActionMap17;
            char __ActionMap18;
            char __ActionMap19;
            char __ActionMap20;
            char __ActionMap21;
            char __ActionMap22;
            char __ActionMap23;
            char __ActionMap24;
            char __ActionMap25;
            char __ActionMap26;
            char __ActionMap27;
            char __ActionMap28;
            char __ActionMap29;
            char __ActionMap30;
            char __ActionMap31;
            char __ActionMap32;
            char __ActionMap33;
            char __ActionMap34;
            char __ActionMap35;
            char __ActionMap36;
            char __ActionMap37;
            char __ActionMap38;
            char __ActionMap39;
            char __ActionMap40;
            char __ActionMap41;
            char __ActionMap42;
            char __ActionMap43;
            char __ActionMap44;
            char __ActionMap45;
            char __ActionMap46;
            char __ActionMap47;
            char __ActionMap48;
            char __ActionMap49;
            char __ActionMap50;
            char __ActionMap51;
            char __ActionMap52;
            char __ActionMap53;
            char __ActionMap54;
            char __ActionMap55;
            char __ActionMap56;
            char __ActionMap57;
            char __ActionMap58;
            char __ActionMap59;
            char __ActionMap60;
            char __ActionMap61;
            char __ActionMap62;
            char __ActionMap63;
            char __ActionMap64;
            char __ActionMap65;
            char __ActionMap66;
            char __ActionMap67;
            char __ActionMap68;
            char __ActionMap69;
            char __ActionMap70;
            char __ActionMap71;
            char __ActionMap72;
            char __ActionMap73;
            char __ActionMap74;
            char __ActionMap75;
            char __ActionMap76;
            char __ActionMap77;
            char __ActionMap78;
            char __ActionMap79;
            char __ActionMap80;
            char __ActionMap81;
            char __ActionMap82;
            char __ActionMap83;
            char __ActionMap84;
            char __ActionMap85;
            char __ActionMap86;
            char __ActionMap87;
            char __ActionMap88;
            char __ActionMap89;
            char __ActionMap90;
            char __ActionMap91;
            char __ActionMap92;
            char __ActionMap93;
            char __ActionMap94;
            char __ActionMap95;
            char __ActionMap96;
            char __ActionMap97;
            char __ActionMap98;
            char __ActionMap99;
            char __ActionMap100;
            char __ActionMap101;
            char __ActionMap102;
            char __ActionMap103;
            char __ActionMap104;
            char __ActionMap105;
            char __ActionMap106;
            char __ActionMap107;
            char __ActionMap108;
            char __ActionMap109;
            char __ActionMap110;
            char __ActionMap111;
            char __ActionMap112;
            char __ActionMap113;
            char __ActionMap114;
            char __ActionMap115;
            char __ActionMap116;
            char __ActionMap117;
            char __ActionMap118;
            char __ActionMap119;
            char __ActionMap120;
            char __ActionMap121;
            char __ActionMap122;
            char __ActionMap123;
            char __ActionMap124;
            char __ActionMap125;
            char __ActionMap126;
            char __ActionMap127;
            char __ActionMap128;
            char __ActionMap129;
            char __ActionMap130;
            char __ActionMap131;
            char __ActionMap132;
            char __ActionMap133;
            char __ActionMap134;
            char __ActionMap135;
            char __ActionMap136;
            char __ActionMap137;
            char __ActionMap138;
            char __ActionMap139;
            char __ActionMap140;
            char __ActionMap141;
            char __ActionMap142;
            char __ActionMap143;
            char __ActionMap144;
            char __ActionMap145;
            char __ActionMap146;
            char __ActionMap147;
            char __ActionMap148;
            char __ActionMap149;
            char __ActionMap150;
            char __ActionMap151;
            char __ActionMap152;
            char __ActionMap153;
            char __ActionMap154;
            char __ActionMap155;
            char __ActionMap156;
            char __ActionMap157;
            char __ActionMap158;
            char __ActionMap159;
            char __ActionMap160;
            char __ActionMap161;
            char __ActionMap162;
            char __ActionMap163;
            char __ActionMap164;
            char __ActionMap165;
            char __ActionMap166;
            char __ActionMap167;
            char __ActionMap168;
            char __ActionMap169;
            char __ActionMap170;
            char __ActionMap171;
            char __ActionMap172;
            char __ActionMap173;
            char __ActionMap174;
            char __ActionMap175;
            char __ActionMap176;
            char __ActionMap177;
            char __ActionMap178;
            char __ActionMap179;
            char __ActionMap180;
            char __ActionMap181;
            char __ActionMap182;
            char __ActionMap183;
            char __ActionMap184;
            char __ActionMap185;
            char __ActionMap186;
            char __ActionMap187;
            char __ActionMap188;
            char __ActionMap189;
            char __ActionMap190;
            char __ActionMap191;
            char __ActionMap192;
            char __ActionMap193;
            char __ActionMap194;
            char __ActionMap195;
            char __ActionMap196;
            char __ActionMap197;
            char __ActionMap198;
            char __ActionMap199;
            char __ActionMap200;
            char __ActionMap201;
            char __ActionMap202;
            char __ActionMap203;
            char __ActionMap204;
            char __ActionMap205;
            char __ActionMap206;
            char __ActionMap207;
            char __ActionMap208;
            char __ActionMap209;
            char __ActionMap210;
            char __ActionMap211;
            char __ActionMap212;
            char __ActionMap213;
            char __ActionMap214;
            char __ActionMap215;
            char __ActionMap216;
            char __ActionMap217;
            char __ActionMap218;
            char __ActionMap219;
            char __ActionMap220;
            char __ActionMap221;
            char __ActionMap222;
            char __ActionMap223;
            char __ActionMap224;
            char __ActionMap225;
            char __ActionMap226;
            char __ActionMap227;
            char __ActionMap228;
            char __ActionMap229;
            char __ActionMap230;
            char __ActionMap231;
            char __ActionMap232;
            char __ActionMap233;
            char __ActionMap234;
            char __ActionMap235;
            char __ActionMap236;
            char __ActionMap237;
            char __ActionMap238;
            char __ActionMap239;
            char __ActionMap240;
            char __ActionMap241;
            char __ActionMap242;
            char __ActionMap243;
            char __ActionMap244;
            char __ActionMap245;
            char __ActionMap246;
            char __ActionMap247;
            char __ActionMap248;
            char __ActionMap249;
            char __ActionMap250;
            char __ActionMap251;
            char __ActionMap252;
            char __ActionMap253;
            char __ActionMap254;
            char __ActionMap255;
            char __ActionMap256;
            char __ActionMap257;
            char __ActionMap258;
            char __ActionMap259;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.ActionSize = @ref.ActionSize;
            this.DataSize = @ref.DataSize;
            this.NumActions = @ref.NumActions;
            this.RgoAction = @ref.RgoAction;
            this.GuidActionMap = @ref.GuidActionMap;
            this.Genre = @ref.Genre;
            this.BufferSize = @ref.BufferSize;
            this.AxisMin = @ref.AxisMin;
            this.AxisMax = @ref.AxisMax;
            this.HInstString = @ref.HInstString;
            this.FtTimeStamp = @ref.FtTimeStamp;
            this.CRC = @ref.CRC;
            fixed (char* __ptr = &@ref.ActionMap) this.ActionMap = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.ActionSize = this.ActionSize;
            @ref.DataSize = this.DataSize;
            @ref.NumActions = this.NumActions;
            @ref.RgoAction = this.RgoAction;
            @ref.GuidActionMap = this.GuidActionMap;
            @ref.Genre = this.Genre;
            @ref.BufferSize = this.BufferSize;
            @ref.AxisMin = this.AxisMin;
            @ref.AxisMax = this.AxisMax;
            @ref.HInstString = this.HInstString;
            @ref.FtTimeStamp = this.FtTimeStamp;
            @ref.CRC = this.CRC;
            fixed (char* __psrc = this.ActionMap) fixed (char* __ptr = &@ref.ActionMap) Utilities.CopyMemory((IntPtr)__ptr, (IntPtr)__psrc, ActionMap.Length * 2);
		
		}
    }
    
    /// <summary>	
    /// Describes a DirectInput device's capabilities. This structure is used with theIDirectInputDevice8::GetCapabilitiesmethod.	
    /// </summary>	
    /// <remarks>	
    /// <p>The semantics of version numbers are left to the manufacturer of the device. The only guarantee is that newer versions have larger numbers.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
    /// <unmanaged>DIDEVCAPS</unmanaged>	
    /// <unmanaged-short>DIDEVCAPS</unmanaged-short>	
    public  partial class Capabilities {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>DIDC dwFlags</unmanaged>	
        /// <unmanaged-short>DIDC dwFlags</unmanaged-short>	
        public SharpDX.DirectInput.DeviceFlags Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwDevType']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwDevType</unmanaged>	
        /// <unmanaged-short>unsigned int dwDevType</unmanaged-short>	
        internal int RawType;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwAxes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwAxes</unmanaged>	
        /// <unmanaged-short>unsigned int dwAxes</unmanaged-short>	
        public int AxeCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwButtons']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwButtons</unmanaged>	
        /// <unmanaged-short>unsigned int dwButtons</unmanaged-short>	
        public int ButtonCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwPOVs']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwPOVs</unmanaged>	
        /// <unmanaged-short>unsigned int dwPOVs</unmanaged-short>	
        public int PovCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwFFSamplePeriod']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwFFSamplePeriod</unmanaged>	
        /// <unmanaged-short>unsigned int dwFFSamplePeriod</unmanaged-short>	
        public int ForceFeedbackSamplePeriod;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwFFMinTimeResolution']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwFFMinTimeResolution</unmanaged>	
        /// <unmanaged-short>unsigned int dwFFMinTimeResolution</unmanaged-short>	
        public int ForceFeedbackMinimumTimeResolution;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwFirmwareRevision']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwFirmwareRevision</unmanaged>	
        /// <unmanaged-short>unsigned int dwFirmwareRevision</unmanaged-short>	
        public int FirmwareRevision;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwHardwareRevision']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwHardwareRevision</unmanaged>	
        /// <unmanaged-short>unsigned int dwHardwareRevision</unmanaged-short>	
        public int HardwareRevision;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVCAPS::dwFFDriverVersion']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didevcaps</msdn-id>	
        /// <unmanaged>unsigned int dwFFDriverVersion</unmanaged>	
        /// <unmanaged-short>unsigned int dwFFDriverVersion</unmanaged-short>	
        public int DriverVersion;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public SharpDX.DirectInput.DeviceFlags Flags;
            public int RawType;
            public int AxeCount;
            public int ButtonCount;
            public int PovCount;
            public int ForceFeedbackSamplePeriod;
            public int ForceFeedbackMinimumTimeResolution;
            public int FirmwareRevision;
            public int HardwareRevision;
            public int DriverVersion;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Flags = @ref.Flags;
            this.RawType = @ref.RawType;
            this.AxeCount = @ref.AxeCount;
            this.ButtonCount = @ref.ButtonCount;
            this.PovCount = @ref.PovCount;
            this.ForceFeedbackSamplePeriod = @ref.ForceFeedbackSamplePeriod;
            this.ForceFeedbackMinimumTimeResolution = @ref.ForceFeedbackMinimumTimeResolution;
            this.FirmwareRevision = @ref.FirmwareRevision;
            this.HardwareRevision = @ref.HardwareRevision;
            this.DriverVersion = @ref.DriverVersion;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Flags = this.Flags;
            @ref.RawType = this.RawType;
            @ref.AxeCount = this.AxeCount;
            @ref.ButtonCount = this.ButtonCount;
            @ref.PovCount = this.PovCount;
            @ref.ForceFeedbackSamplePeriod = this.ForceFeedbackSamplePeriod;
            @ref.ForceFeedbackMinimumTimeResolution = this.ForceFeedbackMinimumTimeResolution;
            @ref.FirmwareRevision = this.FirmwareRevision;
            @ref.HardwareRevision = this.HardwareRevision;
            @ref.DriverVersion = this.DriverVersion;
		
		}
    }
    
    /// <summary>	
    /// Contains type-specific information for effects that are marked as <see cref="SharpDX.DirectInput.EffectType.Condition"/>.<p>A reference to an array of <see cref="SharpDX.DirectInput.Condition"/> structures for an effect is passed in the lpvTypeSpecificParams member of the <see cref="SharpDX.DirectInput.EffectParameters"/> structure. The number of elements in the array must be either one, or equal to the number of axes associated with the effect.</p>	
    /// </summary>	
    /// <remarks>	
    /// <p>Different types of conditions interpret the parameters differently, but the basic idea is that force resulting from a condition is equal to  A(q - q0) where  A is a scaling coefficient,  q is some metric, and  q0 is the neutral value for that metric.</p> <p>The preceding simplified formula must be adjusted if a nonzero deadband is provided. If the metric is less than lOffset - lDeadBand, the resulting force is given by the following formula:</p> <p> force =  lNegativeCoefficient * ( q - ( lOffset -  lDeadBand))</p> <p>Similarly, if the metric is greater than  lOffset +  lDeadBand, the resulting force is given by the following formula:</p> <p> force =  lPositiveCoefficient * ( q - ( lOffset +  lDeadBand))</p> <p>A spring condition uses axis position as the metric.</p> <p>A damper condition uses axis velocity as the metric.</p> <p>An inertia condition uses axis acceleration as the metric.</p> <p>If the number of <see cref="SharpDX.DirectInput.Condition"/> structures in the array is equal to the number of axes for the effect, the first structure applies to the first axis, the second applies to the second axis, and so on. For example, a two-axis spring condition with  lOffset set to 0 in both <see cref="SharpDX.DirectInput.Condition"/> structures would have the same effect as the joystick self-centering spring. When a condition is defined for each axis in this way, the effect must not be rotated.</p> <p>If there is a single <see cref="SharpDX.DirectInput.Condition"/> structure for an effect with more than one axis, the direction along which the parameters of the <see cref="SharpDX.DirectInput.Condition"/> structure are in effect is determined by the direction parameters passed in the rglDirection field of the <see cref="SharpDX.DirectInput.EffectParameters"/> structure. For example, a friction condition rotated 45 degrees (in polar coordinates) would resist joystick motion in the northeast-southwest direction but would have no effect on joystick motion in the northwest-southeast direction. </p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONDITION']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dicondition</msdn-id>	
    /// <unmanaged>DICONDITION</unmanaged>	
    /// <unmanaged-short>DICONDITION</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct Condition {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONDITION::lOffset']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dicondition</msdn-id>	
        /// <unmanaged>int lOffset</unmanaged>	
        /// <unmanaged-short>int lOffset</unmanaged-short>	
        public int Offset;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONDITION::lPositiveCoefficient']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dicondition</msdn-id>	
        /// <unmanaged>int lPositiveCoefficient</unmanaged>	
        /// <unmanaged-short>int lPositiveCoefficient</unmanaged-short>	
        public int PositiveCoefficient;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONDITION::lNegativeCoefficient']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dicondition</msdn-id>	
        /// <unmanaged>int lNegativeCoefficient</unmanaged>	
        /// <unmanaged-short>int lNegativeCoefficient</unmanaged-short>	
        public int NegativeCoefficient;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONDITION::dwPositiveSaturation']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dicondition</msdn-id>	
        /// <unmanaged>unsigned int dwPositiveSaturation</unmanaged>	
        /// <unmanaged-short>unsigned int dwPositiveSaturation</unmanaged-short>	
        public int PositiveSaturation;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONDITION::dwNegativeSaturation']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dicondition</msdn-id>	
        /// <unmanaged>unsigned int dwNegativeSaturation</unmanaged>	
        /// <unmanaged-short>unsigned int dwNegativeSaturation</unmanaged-short>	
        public int NegativeSaturation;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONDITION::lDeadBand']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dicondition</msdn-id>	
        /// <unmanaged>int lDeadBand</unmanaged>	
        /// <unmanaged-short>int lDeadBand</unmanaged-short>	
        public int DeadBand;
    }
    
    /// <summary>	
    /// Describes a device's data format. This structure is used with theIDirectInputDevice8::SetDataFormatmethod.	
    /// </summary>	
    /// <remarks>	
    /// <p>Applications do not typically need to create a <see cref="SharpDX.DirectInput.DataFormat"/> structure. An application can use one of the predefined global data format variables,  c_dfDIMouse,  c_dfDIMouse2,  c_dfDIKeyboard,  c_dfDIJoystick, or  c_dfDIJoystick2.</p> <p>Applications that need to create a <see cref="SharpDX.DirectInput.DataFormat"/> structure must first call <see cref="SharpDX.DirectInput.Device.EnumObjects"/> to determine the available objects for the current device. This is because the <see cref="SharpDX.DirectInput.Device.SetDataFormat"/> method will return <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/> if an object is described in the <see cref="SharpDX.DirectInput.DataFormat"/> structure but does not exist on the current device.</p> <p>The following code example sets a data format for a device that has an X-axis and a Y-axis:</p> <pre> // Suppose an application uses the following 	
    /// // structure to read device data.  typedef struct MYDATA {  LONG  lX;                   // X-axis goes here.  LONG  lY;                   // Y-axis goes here.  BYTE  bButtonA;             // One button goes here.  BYTE  bButtonB;             // Another button goes here.  BYTE  bPadding[2];          // Must be DWORD multiple in size. 	
    /// } MYDATA;  // Then, it can use the following data format.  DIOBJECTDATAFORMAT rgodf[ ] = {  { &amp;<see cref="SharpDX.DirectInput.ObjectGuid.XAxisStr"/>, FIELD_OFFSET(MYDATA, lX), <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Axis"/> | <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance"/>, 0, },  { &amp;<see cref="SharpDX.DirectInput.ObjectGuid.YAxisStr"/>, FIELD_OFFSET(MYDATA, lY),  <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Axis"/> | <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance"/>, 0, },  { &amp;<see cref="SharpDX.DirectInput.ObjectGuid.ButtonStr"/>, FIELD_OFFSET(MYDATA, bButtonA), <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Button"/> | <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance"/>, 0, },  { &amp;<see cref="SharpDX.DirectInput.ObjectGuid.ButtonStr"/>, FIELD_OFFSET(MYDATA, bButtonB),  <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Button"/> | <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.AnyInstance"/>, 0, }, 	
    /// }; 	
    /// #define numObjects (sizeof(rgodf) / sizeof(rgodf[0]))  <see cref="SharpDX.DirectInput.DataFormat"/> df = {  sizeof(<see cref="SharpDX.DirectInput.DataFormat"/>),       // Size of this structure  sizeof(DIOBJECTDATAFORMAT), // Size of object data format  <see cref="SharpDX.DirectInput.DataFormatFlag.AbsoluteAxis"/>,               // Absolute axis coordinates  sizeof(MYDATA),             // Size of device data  numObjects,                 // Number of objects  rgodf,                      // And here they are 	
    /// }; </pre>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDATAFORMAT']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>	
    /// <unmanaged>DIDATAFORMAT</unmanaged>	
    /// <unmanaged-short>DIDATAFORMAT</unmanaged-short>	
    internal  partial class DataFormat {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDATAFORMAT::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDATAFORMAT::dwObjSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>	
        /// <unmanaged>unsigned int dwObjSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwObjSize</unmanaged-short>	
        internal int ObjectSize;
        
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDATAFORMAT::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>	
        /// <unmanaged>DIDF dwFlags</unmanaged>	
        /// <unmanaged-short>DIDF dwFlags</unmanaged-short>	
        public SharpDX.DirectInput.DataFormatFlag Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDATAFORMAT::dwDataSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>	
        /// <unmanaged>unsigned int dwDataSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwDataSize</unmanaged-short>	
        public int DataSize;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDATAFORMAT::dwNumObjs']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>	
        /// <unmanaged>unsigned int dwNumObjs</unmanaged>	
        /// <unmanaged-short>unsigned int dwNumObjs</unmanaged-short>	
        internal int ObjectArrayCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDATAFORMAT::rgodf']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.didataformat</msdn-id>	
        /// <unmanaged>void* rgodf</unmanaged>	
        /// <unmanaged-short>void rgodf</unmanaged-short>	
        internal System.IntPtr ObjectArrayPointer;
    }
    
    /// <summary>	
    /// Carries information required to display a device image or an overlay image with a callout. This structure is passed to theIDirectInputDevice8::GetImageInfomethod as an array within aDIDEVICEIMAGEINFOHEADERstructure.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
    /// <unmanaged>DIDEVICEIMAGEINFOW</unmanaged>	
    /// <unmanaged-short>DIDEVICEIMAGEINFOW</unmanaged-short>	
    public  partial struct DeviceImage {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::tszImagePath']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>wchar_t tszImagePath[260]</unmanaged>	
        /// <unmanaged-short>wchar_t tszImagePath</unmanaged-short>	
        public string ImagePath;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>unsigned int dwFlags</unmanaged>	
        /// <unmanaged-short>unsigned int dwFlags</unmanaged-short>	
        public int Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::dwViewID']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>unsigned int dwViewID</unmanaged>	
        /// <unmanaged-short>unsigned int dwViewID</unmanaged-short>	
        public int ViewID;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::rcOverlay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>RECT rcOverlay</unmanaged>	
        /// <unmanaged-short>RECT rcOverlay</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawRectangle RcOverlay;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::dwObjID']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>unsigned int dwObjID</unmanaged>	
        /// <unmanaged-short>unsigned int dwObjID</unmanaged-short>	
        public int ObjID;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::dwcValidPts']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>unsigned int dwcValidPts</unmanaged>	
        /// <unmanaged-short>unsigned int dwcValidPts</unmanaged-short>	
        public int ValidPts;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::rgptCalloutLine']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>POINT rgptCalloutLine[5]</unmanaged>	
        /// <unmanaged-short>POINT rgptCalloutLine</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawPoint[] RgptCalloutLine { 
            get { return _RgptCalloutLine ?? (_RgptCalloutLine = new SharpDX.Mathematics.Interop.RawPoint[5]);}
        }
        internal SharpDX.Mathematics.Interop.RawPoint[] _RgptCalloutLine;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::rcCalloutRect']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>RECT rcCalloutRect</unmanaged>	
        /// <unmanaged-short>RECT rcCalloutRect</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawRectangle RcCalloutRect;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOW::dwTextAlign']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfo</msdn-id>	
        /// <unmanaged>unsigned int dwTextAlign</unmanaged>	
        /// <unmanaged-short>unsigned int dwTextAlign</unmanaged-short>	
        public int TextAlign;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public char ImagePath;
            char __ImagePath1;
            char __ImagePath2;
            char __ImagePath3;
            char __ImagePath4;
            char __ImagePath5;
            char __ImagePath6;
            char __ImagePath7;
            char __ImagePath8;
            char __ImagePath9;
            char __ImagePath10;
            char __ImagePath11;
            char __ImagePath12;
            char __ImagePath13;
            char __ImagePath14;
            char __ImagePath15;
            char __ImagePath16;
            char __ImagePath17;
            char __ImagePath18;
            char __ImagePath19;
            char __ImagePath20;
            char __ImagePath21;
            char __ImagePath22;
            char __ImagePath23;
            char __ImagePath24;
            char __ImagePath25;
            char __ImagePath26;
            char __ImagePath27;
            char __ImagePath28;
            char __ImagePath29;
            char __ImagePath30;
            char __ImagePath31;
            char __ImagePath32;
            char __ImagePath33;
            char __ImagePath34;
            char __ImagePath35;
            char __ImagePath36;
            char __ImagePath37;
            char __ImagePath38;
            char __ImagePath39;
            char __ImagePath40;
            char __ImagePath41;
            char __ImagePath42;
            char __ImagePath43;
            char __ImagePath44;
            char __ImagePath45;
            char __ImagePath46;
            char __ImagePath47;
            char __ImagePath48;
            char __ImagePath49;
            char __ImagePath50;
            char __ImagePath51;
            char __ImagePath52;
            char __ImagePath53;
            char __ImagePath54;
            char __ImagePath55;
            char __ImagePath56;
            char __ImagePath57;
            char __ImagePath58;
            char __ImagePath59;
            char __ImagePath60;
            char __ImagePath61;
            char __ImagePath62;
            char __ImagePath63;
            char __ImagePath64;
            char __ImagePath65;
            char __ImagePath66;
            char __ImagePath67;
            char __ImagePath68;
            char __ImagePath69;
            char __ImagePath70;
            char __ImagePath71;
            char __ImagePath72;
            char __ImagePath73;
            char __ImagePath74;
            char __ImagePath75;
            char __ImagePath76;
            char __ImagePath77;
            char __ImagePath78;
            char __ImagePath79;
            char __ImagePath80;
            char __ImagePath81;
            char __ImagePath82;
            char __ImagePath83;
            char __ImagePath84;
            char __ImagePath85;
            char __ImagePath86;
            char __ImagePath87;
            char __ImagePath88;
            char __ImagePath89;
            char __ImagePath90;
            char __ImagePath91;
            char __ImagePath92;
            char __ImagePath93;
            char __ImagePath94;
            char __ImagePath95;
            char __ImagePath96;
            char __ImagePath97;
            char __ImagePath98;
            char __ImagePath99;
            char __ImagePath100;
            char __ImagePath101;
            char __ImagePath102;
            char __ImagePath103;
            char __ImagePath104;
            char __ImagePath105;
            char __ImagePath106;
            char __ImagePath107;
            char __ImagePath108;
            char __ImagePath109;
            char __ImagePath110;
            char __ImagePath111;
            char __ImagePath112;
            char __ImagePath113;
            char __ImagePath114;
            char __ImagePath115;
            char __ImagePath116;
            char __ImagePath117;
            char __ImagePath118;
            char __ImagePath119;
            char __ImagePath120;
            char __ImagePath121;
            char __ImagePath122;
            char __ImagePath123;
            char __ImagePath124;
            char __ImagePath125;
            char __ImagePath126;
            char __ImagePath127;
            char __ImagePath128;
            char __ImagePath129;
            char __ImagePath130;
            char __ImagePath131;
            char __ImagePath132;
            char __ImagePath133;
            char __ImagePath134;
            char __ImagePath135;
            char __ImagePath136;
            char __ImagePath137;
            char __ImagePath138;
            char __ImagePath139;
            char __ImagePath140;
            char __ImagePath141;
            char __ImagePath142;
            char __ImagePath143;
            char __ImagePath144;
            char __ImagePath145;
            char __ImagePath146;
            char __ImagePath147;
            char __ImagePath148;
            char __ImagePath149;
            char __ImagePath150;
            char __ImagePath151;
            char __ImagePath152;
            char __ImagePath153;
            char __ImagePath154;
            char __ImagePath155;
            char __ImagePath156;
            char __ImagePath157;
            char __ImagePath158;
            char __ImagePath159;
            char __ImagePath160;
            char __ImagePath161;
            char __ImagePath162;
            char __ImagePath163;
            char __ImagePath164;
            char __ImagePath165;
            char __ImagePath166;
            char __ImagePath167;
            char __ImagePath168;
            char __ImagePath169;
            char __ImagePath170;
            char __ImagePath171;
            char __ImagePath172;
            char __ImagePath173;
            char __ImagePath174;
            char __ImagePath175;
            char __ImagePath176;
            char __ImagePath177;
            char __ImagePath178;
            char __ImagePath179;
            char __ImagePath180;
            char __ImagePath181;
            char __ImagePath182;
            char __ImagePath183;
            char __ImagePath184;
            char __ImagePath185;
            char __ImagePath186;
            char __ImagePath187;
            char __ImagePath188;
            char __ImagePath189;
            char __ImagePath190;
            char __ImagePath191;
            char __ImagePath192;
            char __ImagePath193;
            char __ImagePath194;
            char __ImagePath195;
            char __ImagePath196;
            char __ImagePath197;
            char __ImagePath198;
            char __ImagePath199;
            char __ImagePath200;
            char __ImagePath201;
            char __ImagePath202;
            char __ImagePath203;
            char __ImagePath204;
            char __ImagePath205;
            char __ImagePath206;
            char __ImagePath207;
            char __ImagePath208;
            char __ImagePath209;
            char __ImagePath210;
            char __ImagePath211;
            char __ImagePath212;
            char __ImagePath213;
            char __ImagePath214;
            char __ImagePath215;
            char __ImagePath216;
            char __ImagePath217;
            char __ImagePath218;
            char __ImagePath219;
            char __ImagePath220;
            char __ImagePath221;
            char __ImagePath222;
            char __ImagePath223;
            char __ImagePath224;
            char __ImagePath225;
            char __ImagePath226;
            char __ImagePath227;
            char __ImagePath228;
            char __ImagePath229;
            char __ImagePath230;
            char __ImagePath231;
            char __ImagePath232;
            char __ImagePath233;
            char __ImagePath234;
            char __ImagePath235;
            char __ImagePath236;
            char __ImagePath237;
            char __ImagePath238;
            char __ImagePath239;
            char __ImagePath240;
            char __ImagePath241;
            char __ImagePath242;
            char __ImagePath243;
            char __ImagePath244;
            char __ImagePath245;
            char __ImagePath246;
            char __ImagePath247;
            char __ImagePath248;
            char __ImagePath249;
            char __ImagePath250;
            char __ImagePath251;
            char __ImagePath252;
            char __ImagePath253;
            char __ImagePath254;
            char __ImagePath255;
            char __ImagePath256;
            char __ImagePath257;
            char __ImagePath258;
            char __ImagePath259;
            public int Flags;
            public int ViewID;
            public SharpDX.Mathematics.Interop.RawRectangle RcOverlay;
            public int ObjID;
            public int ValidPts;
            public SharpDX.Mathematics.Interop.RawPoint RgptCalloutLine;
            SharpDX.Mathematics.Interop.RawPoint __RgptCalloutLine1;
            SharpDX.Mathematics.Interop.RawPoint __RgptCalloutLine2;
            SharpDX.Mathematics.Interop.RawPoint __RgptCalloutLine3;
            SharpDX.Mathematics.Interop.RawPoint __RgptCalloutLine4;
            public SharpDX.Mathematics.Interop.RawRectangle RcCalloutRect;
            public int TextAlign;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            fixed (char* __ptr = &@ref.ImagePath) this.ImagePath = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
            this.Flags = @ref.Flags;
            this.ViewID = @ref.ViewID;
            this.RcOverlay = @ref.RcOverlay;
            this.ObjID = @ref.ObjID;
            this.ValidPts = @ref.ValidPts;
            fixed (void* __to = &this.RgptCalloutLine[0]) fixed (void* __from = &@ref.RgptCalloutLine) SharpDX.Utilities.CopyMemory((IntPtr) __to, (IntPtr) __from, 5*sizeof ( SharpDX.Mathematics.Interop.RawPoint));
            this.RcCalloutRect = @ref.RcCalloutRect;
            this.TextAlign = @ref.TextAlign;
        }
    }
    
    /// <summary>	
    /// Contains information about device images. Used in theIDirectInputDevice8::GetImageInfomethod.	
    /// </summary>	
    /// <remarks>	
    /// <p>The buffer at lprgImageInfoArray must be large enough to hold all required image information structures. Applications can query for the required size by calling the <see cref="SharpDX.DirectInput.Device.GetImageInfo"/> method with the  dwBufferSize member set to zero. After the call, dwBufferUsed contains the amount of memory, in bytes, that was modified.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
    /// <unmanaged>DIDEVICEIMAGEINFOHEADERW</unmanaged>	
    /// <unmanaged-short>DIDEVICEIMAGEINFOHEADERW</unmanaged-short>	
    public  partial class DeviceImageHeader {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwSizeImageInfo']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwSizeImageInfo</unmanaged>	
        /// <unmanaged-short>unsigned int dwSizeImageInfo</unmanaged-short>	
        internal int SizeImageInfo;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcViews']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwcViews</unmanaged>	
        /// <unmanaged-short>unsigned int dwcViews</unmanaged-short>	
        public int ViewCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcButtons']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwcButtons</unmanaged>	
        /// <unmanaged-short>unsigned int dwcButtons</unmanaged-short>	
        public int ButtonCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcAxes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwcAxes</unmanaged>	
        /// <unmanaged-short>unsigned int dwcAxes</unmanaged-short>	
        public int AxeCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwcPOVs']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwcPOVs</unmanaged>	
        /// <unmanaged-short>unsigned int dwcPOVs</unmanaged-short>	
        public int PovCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwBufferSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwBufferSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwBufferSize</unmanaged-short>	
        internal int BufferSize;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::dwBufferUsed']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>unsigned int dwBufferUsed</unmanaged>	
        /// <unmanaged-short>unsigned int dwBufferUsed</unmanaged-short>	
        internal int BufferUsed;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEIMAGEINFOHEADERW::lprgImageInfoArray']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceimageinfoheader</msdn-id>	
        /// <unmanaged>DIDEVICEIMAGEINFOW* lprgImageInfoArray</unmanaged>	
        /// <unmanaged-short>DIDEVICEIMAGEINFOW lprgImageInfoArray</unmanaged-short>	
        internal System.IntPtr ImageInfoArrayPointer;
    }
    
    /// <summary>	
    /// Describes an instance of a DirectInput device. This structure is used with theIDirectInput8::EnumDevices,IDirectInput8::EnumDevicesBySemantics, andIDirectInputDevice8::GetDeviceInfomethods.	
    /// </summary>	
    /// <remarks>	
    /// <p>The following device types and subtypes are defined for use in the  dwDevType member. </p> <ul> <li><see cref="SharpDX.DirectInput.DeviceType.FirstPerson"/> <p>First-person action game device. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FirstPersonLimited"/> <p>Device that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FirstPersonShooter"/> <p>Device designed for first-person shooter games. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FirstPersonSixdof"/> <p>Device with six degrees of freedom; that is, three lateral axes and three rotational axes. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FirstPersonUnknown"/> <p>Unknown subtype. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Device"/> <p>Device that does not fall into another category. </p></li> <li><see cref="SharpDX.DirectInput.DeviceType.ControlDevice"/> <p>Input device used to control another type of device from within the context of the application. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DeviceControlCommsselection"/> <p>Control used to make communications selections. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DeviceControlCommsselectionHardwired"/> <p>Device that must use its default configuration and cannot be remapped. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DeviceControlUnknown"/> <p>Unknown subtype. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Driving"/> <p>Device for steering. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DrivingCombinedpedals"/> <p>Steering device that reports acceleration and brake pedal values from a single axis. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DrivingDualpedals"/> <p>Steering device that reports acceleration and brake pedal values from separate axes. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DrivingHandheld"/> <p>Hand-held steering device. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DrivingLimited"/> <p>Steering device that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.DrivingThreepedals"/> <p>Steering device that reports acceleration, brake, and clutch pedal values from separate axes. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Flight"/> <p>Controller for flight simulation. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FlightLimited"/> <p>Flight controller that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FlightRc"/> <p>Flight device based on a remote control for model aircraft. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FlightStick"/> <p>Joystick. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.FlightYoke"/> <p>Yoke. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Gamepad"/> <p>Gamepad. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.GamepadLimited"/> <p>Gamepad that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.GamepadStandard"/> <p>Standard gamepad that provides the minimum number of device objects for action mapping. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.GamepadTilt"/> <p>Gamepad that can report x-axis and y-axis data based on the attitude of the controller. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Joystick"/> <p>Joystick. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.JoystickLimited"/> <p>Joystick that does not provide the minimum number of device objects for action mapping. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.JoystickStandard"/> <p>Standard joystick that provides the minimum number of device objects for action mapping. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Keyboard"/> <p>Keyboard or keyboard-like device. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardUnknown"/> <p>Subtype could not be determined. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardPcxt"/> <p>IBM PC/XT 83-key keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardOlivetti"/> <p>Olivetti 102-key keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardPcat"/> <p>IBM PC/AT 84-key keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardPcenh"/> <p>IBM PC Enhanced 101/102-key or Microsoft Natural keyboard.</p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardNokia1050"/> <p>Nokia 1050 keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardNokia9140"/> <p>Nokia 9140 keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardNec98"/> <p>Japanese NEC PC98 keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardNec98laptop"/> <p>Japanese NEC PC98 laptop keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardNec98106"/> <p>Japanese NEC PC98 106-key keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardJapan106"/> <p>Japanese 106-key keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardJapanax"/> <p>Japanese AX keyboard. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.KeyboardJ3100"/> <p>Japanese J3100 keyboard. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Mouse"/> <p>A mouse or mouse-like device (such as a trackball). The following subtypes are defined. </p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.MouseAbsolute"/> <p>Mouse that returns absolute axis data. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.MouseFingerstick"/> <p>Fingerstick. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.MouseTouchpad"/> <p>Touchpad. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.MouseTrackball"/> <p>Trackball. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.MouseTraditional"/> <p>Traditional mouse. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.MouseUnknown"/> <p>Subtype could not be determined. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Remote"/> <p>Remote-control device. The following subtype is defined. </p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.RemoteUnknown"/> <p>Subtype could not be determined. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.ScreenPointer"/> <p>Screen reference. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.ScreenPointerUnknown"/> <p>Unknown subtype. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.ScreenPointerLightgun"/> <p>Light gun. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.ScreenPointerLightpen"/> <p>Light pen. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.ScreenPointerTouch"/> <p>Touch screen. </p></li> </ul> </li> <li><see cref="SharpDX.DirectInput.DeviceType.Supplemental"/> <p>Specialized device with functionality unsuitable for the main control of an application, such as pedals used with a wheel. The following subtypes are defined.</p> <ul> <li><see cref="SharpDX.DirectInput.DeviceSubtype.Supplemental2ndhandcontroller"/> <p>Secondary handheld controller. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalCombinedpedals"/> <p>Device whose primary function is to report acceleration and brake pedal values from a single axis. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalDualpedals"/> <p>Device whose primary function is to report acceleration and brake pedal values from separate axes. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalHandtracker"/> <p>Device that tracks hand movement. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalHeadtracker"/> <p>Device that tracks head movement. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalRudderpedals"/> <p>Device with rudder pedals. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalShifter"/> <p>Device that reports gear selection from an axis. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalShiftstickgate"/> <p>Device that reports gear selection from button states. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalSplitthrottle"/> <p>Device whose primary function is to report at least two throttle values. It may have other controls. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalThreepedals"/> <p>Device whose primary function is to report acceleration, brake, and clutch pedal values from separate axes. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalThrottle"/> <p>Device whose primary function is to report a single throttle value. It may have other controls. </p></li> <li><see cref="SharpDX.DirectInput.DeviceSubtype.SupplementalUnknown"/> <p>Unknown subtype. </p></li> </ul> </li> </ul> <p>Versions of DirectInput earlier than DirectX 8.0 have a somewhat different scheme of device types and subtypes. See the DIDEVTYPExxx defines in Dinput.h.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
    /// <unmanaged>DIDEVICEINSTANCEW</unmanaged>	
    /// <unmanaged-short>DIDEVICEINSTANCEW</unmanaged-short>	
    public  partial class DeviceInstance {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::guidInstance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>GUID guidInstance</unmanaged>	
        /// <unmanaged-short>GUID guidInstance</unmanaged-short>	
        public System.Guid InstanceGuid;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::guidProduct']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>GUID guidProduct</unmanaged>	
        /// <unmanaged-short>GUID guidProduct</unmanaged-short>	
        public System.Guid ProductGuid;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::dwDevType']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>unsigned int dwDevType</unmanaged>	
        /// <unmanaged-short>unsigned int dwDevType</unmanaged-short>	
        internal int RawType;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::tszInstanceName']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>wchar_t tszInstanceName[260]</unmanaged>	
        /// <unmanaged-short>wchar_t tszInstanceName</unmanaged-short>	
        public string InstanceName;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::tszProductName']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>wchar_t tszProductName[260]</unmanaged>	
        /// <unmanaged-short>wchar_t tszProductName</unmanaged-short>	
        public string ProductName;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::guidFFDriver']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>GUID guidFFDriver</unmanaged>	
        /// <unmanaged-short>GUID guidFFDriver</unmanaged-short>	
        public System.Guid ForceFeedbackDriverGuid;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::wUsagePage']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>HID_USAGE_PAGE wUsagePage</unmanaged>	
        /// <unmanaged-short>HID_USAGE_PAGE wUsagePage</unmanaged-short>	
        public SharpDX.Multimedia.UsagePage UsagePage;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEINSTANCEW::wUsage']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceinstance</msdn-id>	
        /// <unmanaged>HID_USAGE_ID wUsage</unmanaged>	
        /// <unmanaged-short>HID_USAGE_ID wUsage</unmanaged-short>	
        public SharpDX.Multimedia.UsageId Usage;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public System.Guid InstanceGuid;
            public System.Guid ProductGuid;
            public int RawType;
            public char InstanceName;
            char __InstanceName1;
            char __InstanceName2;
            char __InstanceName3;
            char __InstanceName4;
            char __InstanceName5;
            char __InstanceName6;
            char __InstanceName7;
            char __InstanceName8;
            char __InstanceName9;
            char __InstanceName10;
            char __InstanceName11;
            char __InstanceName12;
            char __InstanceName13;
            char __InstanceName14;
            char __InstanceName15;
            char __InstanceName16;
            char __InstanceName17;
            char __InstanceName18;
            char __InstanceName19;
            char __InstanceName20;
            char __InstanceName21;
            char __InstanceName22;
            char __InstanceName23;
            char __InstanceName24;
            char __InstanceName25;
            char __InstanceName26;
            char __InstanceName27;
            char __InstanceName28;
            char __InstanceName29;
            char __InstanceName30;
            char __InstanceName31;
            char __InstanceName32;
            char __InstanceName33;
            char __InstanceName34;
            char __InstanceName35;
            char __InstanceName36;
            char __InstanceName37;
            char __InstanceName38;
            char __InstanceName39;
            char __InstanceName40;
            char __InstanceName41;
            char __InstanceName42;
            char __InstanceName43;
            char __InstanceName44;
            char __InstanceName45;
            char __InstanceName46;
            char __InstanceName47;
            char __InstanceName48;
            char __InstanceName49;
            char __InstanceName50;
            char __InstanceName51;
            char __InstanceName52;
            char __InstanceName53;
            char __InstanceName54;
            char __InstanceName55;
            char __InstanceName56;
            char __InstanceName57;
            char __InstanceName58;
            char __InstanceName59;
            char __InstanceName60;
            char __InstanceName61;
            char __InstanceName62;
            char __InstanceName63;
            char __InstanceName64;
            char __InstanceName65;
            char __InstanceName66;
            char __InstanceName67;
            char __InstanceName68;
            char __InstanceName69;
            char __InstanceName70;
            char __InstanceName71;
            char __InstanceName72;
            char __InstanceName73;
            char __InstanceName74;
            char __InstanceName75;
            char __InstanceName76;
            char __InstanceName77;
            char __InstanceName78;
            char __InstanceName79;
            char __InstanceName80;
            char __InstanceName81;
            char __InstanceName82;
            char __InstanceName83;
            char __InstanceName84;
            char __InstanceName85;
            char __InstanceName86;
            char __InstanceName87;
            char __InstanceName88;
            char __InstanceName89;
            char __InstanceName90;
            char __InstanceName91;
            char __InstanceName92;
            char __InstanceName93;
            char __InstanceName94;
            char __InstanceName95;
            char __InstanceName96;
            char __InstanceName97;
            char __InstanceName98;
            char __InstanceName99;
            char __InstanceName100;
            char __InstanceName101;
            char __InstanceName102;
            char __InstanceName103;
            char __InstanceName104;
            char __InstanceName105;
            char __InstanceName106;
            char __InstanceName107;
            char __InstanceName108;
            char __InstanceName109;
            char __InstanceName110;
            char __InstanceName111;
            char __InstanceName112;
            char __InstanceName113;
            char __InstanceName114;
            char __InstanceName115;
            char __InstanceName116;
            char __InstanceName117;
            char __InstanceName118;
            char __InstanceName119;
            char __InstanceName120;
            char __InstanceName121;
            char __InstanceName122;
            char __InstanceName123;
            char __InstanceName124;
            char __InstanceName125;
            char __InstanceName126;
            char __InstanceName127;
            char __InstanceName128;
            char __InstanceName129;
            char __InstanceName130;
            char __InstanceName131;
            char __InstanceName132;
            char __InstanceName133;
            char __InstanceName134;
            char __InstanceName135;
            char __InstanceName136;
            char __InstanceName137;
            char __InstanceName138;
            char __InstanceName139;
            char __InstanceName140;
            char __InstanceName141;
            char __InstanceName142;
            char __InstanceName143;
            char __InstanceName144;
            char __InstanceName145;
            char __InstanceName146;
            char __InstanceName147;
            char __InstanceName148;
            char __InstanceName149;
            char __InstanceName150;
            char __InstanceName151;
            char __InstanceName152;
            char __InstanceName153;
            char __InstanceName154;
            char __InstanceName155;
            char __InstanceName156;
            char __InstanceName157;
            char __InstanceName158;
            char __InstanceName159;
            char __InstanceName160;
            char __InstanceName161;
            char __InstanceName162;
            char __InstanceName163;
            char __InstanceName164;
            char __InstanceName165;
            char __InstanceName166;
            char __InstanceName167;
            char __InstanceName168;
            char __InstanceName169;
            char __InstanceName170;
            char __InstanceName171;
            char __InstanceName172;
            char __InstanceName173;
            char __InstanceName174;
            char __InstanceName175;
            char __InstanceName176;
            char __InstanceName177;
            char __InstanceName178;
            char __InstanceName179;
            char __InstanceName180;
            char __InstanceName181;
            char __InstanceName182;
            char __InstanceName183;
            char __InstanceName184;
            char __InstanceName185;
            char __InstanceName186;
            char __InstanceName187;
            char __InstanceName188;
            char __InstanceName189;
            char __InstanceName190;
            char __InstanceName191;
            char __InstanceName192;
            char __InstanceName193;
            char __InstanceName194;
            char __InstanceName195;
            char __InstanceName196;
            char __InstanceName197;
            char __InstanceName198;
            char __InstanceName199;
            char __InstanceName200;
            char __InstanceName201;
            char __InstanceName202;
            char __InstanceName203;
            char __InstanceName204;
            char __InstanceName205;
            char __InstanceName206;
            char __InstanceName207;
            char __InstanceName208;
            char __InstanceName209;
            char __InstanceName210;
            char __InstanceName211;
            char __InstanceName212;
            char __InstanceName213;
            char __InstanceName214;
            char __InstanceName215;
            char __InstanceName216;
            char __InstanceName217;
            char __InstanceName218;
            char __InstanceName219;
            char __InstanceName220;
            char __InstanceName221;
            char __InstanceName222;
            char __InstanceName223;
            char __InstanceName224;
            char __InstanceName225;
            char __InstanceName226;
            char __InstanceName227;
            char __InstanceName228;
            char __InstanceName229;
            char __InstanceName230;
            char __InstanceName231;
            char __InstanceName232;
            char __InstanceName233;
            char __InstanceName234;
            char __InstanceName235;
            char __InstanceName236;
            char __InstanceName237;
            char __InstanceName238;
            char __InstanceName239;
            char __InstanceName240;
            char __InstanceName241;
            char __InstanceName242;
            char __InstanceName243;
            char __InstanceName244;
            char __InstanceName245;
            char __InstanceName246;
            char __InstanceName247;
            char __InstanceName248;
            char __InstanceName249;
            char __InstanceName250;
            char __InstanceName251;
            char __InstanceName252;
            char __InstanceName253;
            char __InstanceName254;
            char __InstanceName255;
            char __InstanceName256;
            char __InstanceName257;
            char __InstanceName258;
            char __InstanceName259;
            public char ProductName;
            char __ProductName1;
            char __ProductName2;
            char __ProductName3;
            char __ProductName4;
            char __ProductName5;
            char __ProductName6;
            char __ProductName7;
            char __ProductName8;
            char __ProductName9;
            char __ProductName10;
            char __ProductName11;
            char __ProductName12;
            char __ProductName13;
            char __ProductName14;
            char __ProductName15;
            char __ProductName16;
            char __ProductName17;
            char __ProductName18;
            char __ProductName19;
            char __ProductName20;
            char __ProductName21;
            char __ProductName22;
            char __ProductName23;
            char __ProductName24;
            char __ProductName25;
            char __ProductName26;
            char __ProductName27;
            char __ProductName28;
            char __ProductName29;
            char __ProductName30;
            char __ProductName31;
            char __ProductName32;
            char __ProductName33;
            char __ProductName34;
            char __ProductName35;
            char __ProductName36;
            char __ProductName37;
            char __ProductName38;
            char __ProductName39;
            char __ProductName40;
            char __ProductName41;
            char __ProductName42;
            char __ProductName43;
            char __ProductName44;
            char __ProductName45;
            char __ProductName46;
            char __ProductName47;
            char __ProductName48;
            char __ProductName49;
            char __ProductName50;
            char __ProductName51;
            char __ProductName52;
            char __ProductName53;
            char __ProductName54;
            char __ProductName55;
            char __ProductName56;
            char __ProductName57;
            char __ProductName58;
            char __ProductName59;
            char __ProductName60;
            char __ProductName61;
            char __ProductName62;
            char __ProductName63;
            char __ProductName64;
            char __ProductName65;
            char __ProductName66;
            char __ProductName67;
            char __ProductName68;
            char __ProductName69;
            char __ProductName70;
            char __ProductName71;
            char __ProductName72;
            char __ProductName73;
            char __ProductName74;
            char __ProductName75;
            char __ProductName76;
            char __ProductName77;
            char __ProductName78;
            char __ProductName79;
            char __ProductName80;
            char __ProductName81;
            char __ProductName82;
            char __ProductName83;
            char __ProductName84;
            char __ProductName85;
            char __ProductName86;
            char __ProductName87;
            char __ProductName88;
            char __ProductName89;
            char __ProductName90;
            char __ProductName91;
            char __ProductName92;
            char __ProductName93;
            char __ProductName94;
            char __ProductName95;
            char __ProductName96;
            char __ProductName97;
            char __ProductName98;
            char __ProductName99;
            char __ProductName100;
            char __ProductName101;
            char __ProductName102;
            char __ProductName103;
            char __ProductName104;
            char __ProductName105;
            char __ProductName106;
            char __ProductName107;
            char __ProductName108;
            char __ProductName109;
            char __ProductName110;
            char __ProductName111;
            char __ProductName112;
            char __ProductName113;
            char __ProductName114;
            char __ProductName115;
            char __ProductName116;
            char __ProductName117;
            char __ProductName118;
            char __ProductName119;
            char __ProductName120;
            char __ProductName121;
            char __ProductName122;
            char __ProductName123;
            char __ProductName124;
            char __ProductName125;
            char __ProductName126;
            char __ProductName127;
            char __ProductName128;
            char __ProductName129;
            char __ProductName130;
            char __ProductName131;
            char __ProductName132;
            char __ProductName133;
            char __ProductName134;
            char __ProductName135;
            char __ProductName136;
            char __ProductName137;
            char __ProductName138;
            char __ProductName139;
            char __ProductName140;
            char __ProductName141;
            char __ProductName142;
            char __ProductName143;
            char __ProductName144;
            char __ProductName145;
            char __ProductName146;
            char __ProductName147;
            char __ProductName148;
            char __ProductName149;
            char __ProductName150;
            char __ProductName151;
            char __ProductName152;
            char __ProductName153;
            char __ProductName154;
            char __ProductName155;
            char __ProductName156;
            char __ProductName157;
            char __ProductName158;
            char __ProductName159;
            char __ProductName160;
            char __ProductName161;
            char __ProductName162;
            char __ProductName163;
            char __ProductName164;
            char __ProductName165;
            char __ProductName166;
            char __ProductName167;
            char __ProductName168;
            char __ProductName169;
            char __ProductName170;
            char __ProductName171;
            char __ProductName172;
            char __ProductName173;
            char __ProductName174;
            char __ProductName175;
            char __ProductName176;
            char __ProductName177;
            char __ProductName178;
            char __ProductName179;
            char __ProductName180;
            char __ProductName181;
            char __ProductName182;
            char __ProductName183;
            char __ProductName184;
            char __ProductName185;
            char __ProductName186;
            char __ProductName187;
            char __ProductName188;
            char __ProductName189;
            char __ProductName190;
            char __ProductName191;
            char __ProductName192;
            char __ProductName193;
            char __ProductName194;
            char __ProductName195;
            char __ProductName196;
            char __ProductName197;
            char __ProductName198;
            char __ProductName199;
            char __ProductName200;
            char __ProductName201;
            char __ProductName202;
            char __ProductName203;
            char __ProductName204;
            char __ProductName205;
            char __ProductName206;
            char __ProductName207;
            char __ProductName208;
            char __ProductName209;
            char __ProductName210;
            char __ProductName211;
            char __ProductName212;
            char __ProductName213;
            char __ProductName214;
            char __ProductName215;
            char __ProductName216;
            char __ProductName217;
            char __ProductName218;
            char __ProductName219;
            char __ProductName220;
            char __ProductName221;
            char __ProductName222;
            char __ProductName223;
            char __ProductName224;
            char __ProductName225;
            char __ProductName226;
            char __ProductName227;
            char __ProductName228;
            char __ProductName229;
            char __ProductName230;
            char __ProductName231;
            char __ProductName232;
            char __ProductName233;
            char __ProductName234;
            char __ProductName235;
            char __ProductName236;
            char __ProductName237;
            char __ProductName238;
            char __ProductName239;
            char __ProductName240;
            char __ProductName241;
            char __ProductName242;
            char __ProductName243;
            char __ProductName244;
            char __ProductName245;
            char __ProductName246;
            char __ProductName247;
            char __ProductName248;
            char __ProductName249;
            char __ProductName250;
            char __ProductName251;
            char __ProductName252;
            char __ProductName253;
            char __ProductName254;
            char __ProductName255;
            char __ProductName256;
            char __ProductName257;
            char __ProductName258;
            char __ProductName259;
            public System.Guid ForceFeedbackDriverGuid;
            public SharpDX.Multimedia.UsagePage UsagePage;
            public SharpDX.Multimedia.UsageId Usage;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.InstanceGuid = @ref.InstanceGuid;
            this.ProductGuid = @ref.ProductGuid;
            this.RawType = @ref.RawType;
            fixed (char* __ptr = &@ref.InstanceName) this.InstanceName = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
            fixed (char* __ptr = &@ref.ProductName) this.ProductName = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
            this.ForceFeedbackDriverGuid = @ref.ForceFeedbackDriverGuid;
            this.UsagePage = @ref.UsagePage;
            this.Usage = @ref.Usage;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.InstanceGuid = this.InstanceGuid;
            @ref.ProductGuid = this.ProductGuid;
            @ref.RawType = this.RawType;
            fixed (char* __psrc = this.InstanceName) fixed (char* __ptr = &@ref.InstanceName) Utilities.CopyMemory((IntPtr)__ptr, (IntPtr)__psrc, InstanceName.Length * 2);
            fixed (char* __psrc = this.ProductName) fixed (char* __ptr = &@ref.ProductName) Utilities.CopyMemory((IntPtr)__ptr, (IntPtr)__psrc, ProductName.Length * 2);
            @ref.ForceFeedbackDriverGuid = this.ForceFeedbackDriverGuid;
            @ref.UsagePage = this.UsagePage;
            @ref.Usage = this.Usage;
		
		}
    }
    
    /// <summary>	
    /// Describes a device object instance. This structure is used with theIDirectInputDevice8::EnumObjectsmethod to provide theDIEnumDeviceObjectsCallbackcallback function with information about a particular object associated with a device, such as an axis or button. It is also used with theIDirectInputDevice8::GetObjectInfomethod to retrieve information about a device object.	
    /// </summary>	
    /// <remarks>	
    /// <table><tr><th>Note </th></tr><tr><td>The value in dwOfs is the offset within the raw data returned by the device, regardless of whether the data format has been set for the device. </td></tr></table> <p>Applications can use the wUsagePage and wUsage members to obtain additional information about how the object was designed to be used. For example, if wUsagePage has the value 0x02 (vehicle controls) and  wUsage has the value 0xB9 (elevator trim), the object was designed to be the elevator trim control on a flight stick. A flight simulator application can use this information to provide more reasonable defaults for objects on the device. HID usage codes are determined by the USB standards committee.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
    /// <unmanaged>DIDEVICEOBJECTINSTANCEW</unmanaged>	
    /// <unmanaged-short>DIDEVICEOBJECTINSTANCEW</unmanaged-short>	
    public  partial class DeviceObjectInstance {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::guidType']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>GUID guidType</unmanaged>	
        /// <unmanaged-short>GUID guidType</unmanaged-short>	
        public System.Guid ObjectType;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwOfs']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned int dwOfs</unmanaged>	
        /// <unmanaged-short>unsigned int dwOfs</unmanaged-short>	
        public int Offset;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwType']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>DIDFT dwType</unmanaged>	
        /// <unmanaged-short>DIDFT dwType</unmanaged-short>	
        public SharpDX.DirectInput.DeviceObjectId ObjectId;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>DIDOI dwFlags</unmanaged>	
        /// <unmanaged-short>DIDOI dwFlags</unmanaged-short>	
        public SharpDX.DirectInput.ObjectAspect Aspect;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::tszName']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>wchar_t tszName[260]</unmanaged>	
        /// <unmanaged-short>wchar_t tszName</unmanaged-short>	
        public string Name;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwFFMaxForce']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned int dwFFMaxForce</unmanaged>	
        /// <unmanaged-short>unsigned int dwFFMaxForce</unmanaged-short>	
        public int MaximumForceFeedback;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwFFForceResolution']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned int dwFFForceResolution</unmanaged>	
        /// <unmanaged-short>unsigned int dwFFForceResolution</unmanaged-short>	
        public int ForceFeedbackResolution;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wCollectionNumber']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned short wCollectionNumber</unmanaged>	
        /// <unmanaged-short>unsigned short wCollectionNumber</unmanaged-short>	
        public short CollectionNumber;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wDesignatorIndex']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned short wDesignatorIndex</unmanaged>	
        /// <unmanaged-short>unsigned short wDesignatorIndex</unmanaged-short>	
        public short DesignatorIndex;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wUsagePage']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned short wUsagePage</unmanaged>	
        /// <unmanaged-short>unsigned short wUsagePage</unmanaged-short>	
        public short UsagePage;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wUsage']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned short wUsage</unmanaged>	
        /// <unmanaged-short>unsigned short wUsage</unmanaged-short>	
        public short Usage;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::dwDimension']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned int dwDimension</unmanaged>	
        /// <unmanaged-short>unsigned int dwDimension</unmanaged-short>	
        public int Dimension;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wExponent']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned short wExponent</unmanaged>	
        /// <unmanaged-short>unsigned short wExponent</unmanaged-short>	
        public short Exponent;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTINSTANCEW::wReportId']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectinstance</msdn-id>	
        /// <unmanaged>unsigned short wReportId</unmanaged>	
        /// <unmanaged-short>unsigned short wReportId</unmanaged-short>	
        public short ReportId;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public System.Guid ObjectType;
            public int Offset;
            public SharpDX.DirectInput.DeviceObjectId ObjectId;
            public SharpDX.DirectInput.ObjectAspect Aspect;
            public char Name;
            char __Name1;
            char __Name2;
            char __Name3;
            char __Name4;
            char __Name5;
            char __Name6;
            char __Name7;
            char __Name8;
            char __Name9;
            char __Name10;
            char __Name11;
            char __Name12;
            char __Name13;
            char __Name14;
            char __Name15;
            char __Name16;
            char __Name17;
            char __Name18;
            char __Name19;
            char __Name20;
            char __Name21;
            char __Name22;
            char __Name23;
            char __Name24;
            char __Name25;
            char __Name26;
            char __Name27;
            char __Name28;
            char __Name29;
            char __Name30;
            char __Name31;
            char __Name32;
            char __Name33;
            char __Name34;
            char __Name35;
            char __Name36;
            char __Name37;
            char __Name38;
            char __Name39;
            char __Name40;
            char __Name41;
            char __Name42;
            char __Name43;
            char __Name44;
            char __Name45;
            char __Name46;
            char __Name47;
            char __Name48;
            char __Name49;
            char __Name50;
            char __Name51;
            char __Name52;
            char __Name53;
            char __Name54;
            char __Name55;
            char __Name56;
            char __Name57;
            char __Name58;
            char __Name59;
            char __Name60;
            char __Name61;
            char __Name62;
            char __Name63;
            char __Name64;
            char __Name65;
            char __Name66;
            char __Name67;
            char __Name68;
            char __Name69;
            char __Name70;
            char __Name71;
            char __Name72;
            char __Name73;
            char __Name74;
            char __Name75;
            char __Name76;
            char __Name77;
            char __Name78;
            char __Name79;
            char __Name80;
            char __Name81;
            char __Name82;
            char __Name83;
            char __Name84;
            char __Name85;
            char __Name86;
            char __Name87;
            char __Name88;
            char __Name89;
            char __Name90;
            char __Name91;
            char __Name92;
            char __Name93;
            char __Name94;
            char __Name95;
            char __Name96;
            char __Name97;
            char __Name98;
            char __Name99;
            char __Name100;
            char __Name101;
            char __Name102;
            char __Name103;
            char __Name104;
            char __Name105;
            char __Name106;
            char __Name107;
            char __Name108;
            char __Name109;
            char __Name110;
            char __Name111;
            char __Name112;
            char __Name113;
            char __Name114;
            char __Name115;
            char __Name116;
            char __Name117;
            char __Name118;
            char __Name119;
            char __Name120;
            char __Name121;
            char __Name122;
            char __Name123;
            char __Name124;
            char __Name125;
            char __Name126;
            char __Name127;
            char __Name128;
            char __Name129;
            char __Name130;
            char __Name131;
            char __Name132;
            char __Name133;
            char __Name134;
            char __Name135;
            char __Name136;
            char __Name137;
            char __Name138;
            char __Name139;
            char __Name140;
            char __Name141;
            char __Name142;
            char __Name143;
            char __Name144;
            char __Name145;
            char __Name146;
            char __Name147;
            char __Name148;
            char __Name149;
            char __Name150;
            char __Name151;
            char __Name152;
            char __Name153;
            char __Name154;
            char __Name155;
            char __Name156;
            char __Name157;
            char __Name158;
            char __Name159;
            char __Name160;
            char __Name161;
            char __Name162;
            char __Name163;
            char __Name164;
            char __Name165;
            char __Name166;
            char __Name167;
            char __Name168;
            char __Name169;
            char __Name170;
            char __Name171;
            char __Name172;
            char __Name173;
            char __Name174;
            char __Name175;
            char __Name176;
            char __Name177;
            char __Name178;
            char __Name179;
            char __Name180;
            char __Name181;
            char __Name182;
            char __Name183;
            char __Name184;
            char __Name185;
            char __Name186;
            char __Name187;
            char __Name188;
            char __Name189;
            char __Name190;
            char __Name191;
            char __Name192;
            char __Name193;
            char __Name194;
            char __Name195;
            char __Name196;
            char __Name197;
            char __Name198;
            char __Name199;
            char __Name200;
            char __Name201;
            char __Name202;
            char __Name203;
            char __Name204;
            char __Name205;
            char __Name206;
            char __Name207;
            char __Name208;
            char __Name209;
            char __Name210;
            char __Name211;
            char __Name212;
            char __Name213;
            char __Name214;
            char __Name215;
            char __Name216;
            char __Name217;
            char __Name218;
            char __Name219;
            char __Name220;
            char __Name221;
            char __Name222;
            char __Name223;
            char __Name224;
            char __Name225;
            char __Name226;
            char __Name227;
            char __Name228;
            char __Name229;
            char __Name230;
            char __Name231;
            char __Name232;
            char __Name233;
            char __Name234;
            char __Name235;
            char __Name236;
            char __Name237;
            char __Name238;
            char __Name239;
            char __Name240;
            char __Name241;
            char __Name242;
            char __Name243;
            char __Name244;
            char __Name245;
            char __Name246;
            char __Name247;
            char __Name248;
            char __Name249;
            char __Name250;
            char __Name251;
            char __Name252;
            char __Name253;
            char __Name254;
            char __Name255;
            char __Name256;
            char __Name257;
            char __Name258;
            char __Name259;
            public int MaximumForceFeedback;
            public int ForceFeedbackResolution;
            public short CollectionNumber;
            public short DesignatorIndex;
            public short UsagePage;
            public short Usage;
            public int Dimension;
            public short Exponent;
            public short ReportId;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.ObjectType = @ref.ObjectType;
            this.Offset = @ref.Offset;
            this.ObjectId = @ref.ObjectId;
            this.Aspect = @ref.Aspect;
            fixed (char* __ptr = &@ref.Name) this.Name = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
            this.MaximumForceFeedback = @ref.MaximumForceFeedback;
            this.ForceFeedbackResolution = @ref.ForceFeedbackResolution;
            this.CollectionNumber = @ref.CollectionNumber;
            this.DesignatorIndex = @ref.DesignatorIndex;
            this.UsagePage = @ref.UsagePage;
            this.Usage = @ref.Usage;
            this.Dimension = @ref.Dimension;
            this.Exponent = @ref.Exponent;
            this.ReportId = @ref.ReportId;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.ObjectType = this.ObjectType;
            @ref.Offset = this.Offset;
            @ref.ObjectId = this.ObjectId;
            @ref.Aspect = this.Aspect;
            fixed (char* __psrc = this.Name) fixed (char* __ptr = &@ref.Name) Utilities.CopyMemory((IntPtr)__ptr, (IntPtr)__psrc, Name.Length * 2);
            @ref.MaximumForceFeedback = this.MaximumForceFeedback;
            @ref.ForceFeedbackResolution = this.ForceFeedbackResolution;
            @ref.CollectionNumber = this.CollectionNumber;
            @ref.DesignatorIndex = this.DesignatorIndex;
            @ref.UsagePage = this.UsagePage;
            @ref.Usage = this.Usage;
            @ref.Dimension = this.Dimension;
            @ref.Exponent = this.Exponent;
            @ref.ReportId = this.ReportId;
		
		}
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFESCAPE']/*"/>	
    /// <msdn-id>bb280505</msdn-id>	
    /// <unmanaged>DIEFFESCAPE</unmanaged>	
    /// <unmanaged-short>DIEFFESCAPE</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct EffectEscape {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFESCAPE::dwSize']/*"/>	
        /// <msdn-id>bb280505</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFESCAPE::dwCommand']/*"/>	
        /// <msdn-id>bb280505</msdn-id>	
        /// <unmanaged>unsigned int dwCommand</unmanaged>	
        /// <unmanaged-short>unsigned int dwCommand</unmanaged-short>	
        public int Command;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFESCAPE::lpvInBuffer']/*"/>	
        /// <msdn-id>bb280505</msdn-id>	
        /// <unmanaged>void* lpvInBuffer</unmanaged>	
        /// <unmanaged-short>void lpvInBuffer</unmanaged-short>	
        internal System.IntPtr InBufferPointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFESCAPE::cbInBuffer']/*"/>	
        /// <msdn-id>bb280505</msdn-id>	
        /// <unmanaged>unsigned int cbInBuffer</unmanaged>	
        /// <unmanaged-short>unsigned int cbInBuffer</unmanaged-short>	
        internal int InBufferSize;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFESCAPE::lpvOutBuffer']/*"/>	
        /// <msdn-id>bb280505</msdn-id>	
        /// <unmanaged>void* lpvOutBuffer</unmanaged>	
        /// <unmanaged-short>void lpvOutBuffer</unmanaged-short>	
        internal System.IntPtr OutBufferPointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFESCAPE::cbOutBuffer']/*"/>	
        /// <msdn-id>bb280505</msdn-id>	
        /// <unmanaged>unsigned int cbOutBuffer</unmanaged>	
        /// <unmanaged-short>unsigned int cbOutBuffer</unmanaged-short>	
        internal int OutBufferSize;
    }
    
    /// <summary>	
    /// Describes data for a force-feedback effect stored in a file. It is used in conjunction with theIDirectInputDevice8::EnumEffectsInFileandIDirectInputDevice8::WriteEffectToFilemethods.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIFILEEFFECT']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.difileeffect</msdn-id>	
    /// <unmanaged>DIFILEEFFECT</unmanaged>	
    /// <unmanaged-short>DIFILEEFFECT</unmanaged-short>	
    public  partial class EffectFile {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIFILEEFFECT::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.difileeffect</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIFILEEFFECT::GuidEffect']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.difileeffect</msdn-id>	
        /// <unmanaged>GUID GuidEffect</unmanaged>	
        /// <unmanaged-short>GUID GuidEffect</unmanaged-short>	
        public System.Guid Guid;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIFILEEFFECT::lpDiEffect']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.difileeffect</msdn-id>	
        /// <unmanaged>const DIEFFECT* lpDiEffect</unmanaged>	
        /// <unmanaged-short>DIEFFECT lpDiEffect</unmanaged-short>	
        internal System.IntPtr EffectParametersPointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIFILEEFFECT::szFriendlyName']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.difileeffect</msdn-id>	
        /// <unmanaged>char szFriendlyName[260]</unmanaged>	
        /// <unmanaged-short>char szFriendlyName</unmanaged-short>	
        public string Name;
    }
    
    /// <summary>	
    /// Used by theIDirectInputDevice8::EnumEffectsandIDirectInputDevice8::GetEffectInfomethods to return information about a particular effect supported by a device.	
    /// </summary>	
    /// <remarks>	
    /// <p>Use the DIDFT_GETTYPE macro to extract the effect type from the dwEffType flags.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECTINFOW']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dieffectinfo</msdn-id>	
    /// <unmanaged>DIEFFECTINFOW</unmanaged>	
    /// <unmanaged-short>DIEFFECTINFOW</unmanaged-short>	
    public  partial class EffectInfo {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECTINFOW::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffectinfo</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECTINFOW::guid']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffectinfo</msdn-id>	
        /// <unmanaged>GUID guid</unmanaged>	
        /// <unmanaged-short>GUID guid</unmanaged-short>	
        public System.Guid Guid;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECTINFOW::dwEffType']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffectinfo</msdn-id>	
        /// <unmanaged>DIEFT dwEffType</unmanaged>	
        /// <unmanaged-short>DIEFT dwEffType</unmanaged-short>	
        public SharpDX.DirectInput.EffectType Type;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECTINFOW::dwStaticParams']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffectinfo</msdn-id>	
        /// <unmanaged>DIEP dwStaticParams</unmanaged>	
        /// <unmanaged-short>DIEP dwStaticParams</unmanaged-short>	
        public SharpDX.DirectInput.EffectParameterFlags StaticParameters;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECTINFOW::dwDynamicParams']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffectinfo</msdn-id>	
        /// <unmanaged>DIEP dwDynamicParams</unmanaged>	
        /// <unmanaged-short>DIEP dwDynamicParams</unmanaged-short>	
        public SharpDX.DirectInput.EffectParameterFlags DynamicParameters;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECTINFOW::tszName']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffectinfo</msdn-id>	
        /// <unmanaged>wchar_t tszName[260]</unmanaged>	
        /// <unmanaged-short>wchar_t tszName</unmanaged-short>	
        public string Name;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public System.Guid Guid;
            public SharpDX.DirectInput.EffectType Type;
            public SharpDX.DirectInput.EffectParameterFlags StaticParameters;
            public SharpDX.DirectInput.EffectParameterFlags DynamicParameters;
            public char Name;
            char __Name1;
            char __Name2;
            char __Name3;
            char __Name4;
            char __Name5;
            char __Name6;
            char __Name7;
            char __Name8;
            char __Name9;
            char __Name10;
            char __Name11;
            char __Name12;
            char __Name13;
            char __Name14;
            char __Name15;
            char __Name16;
            char __Name17;
            char __Name18;
            char __Name19;
            char __Name20;
            char __Name21;
            char __Name22;
            char __Name23;
            char __Name24;
            char __Name25;
            char __Name26;
            char __Name27;
            char __Name28;
            char __Name29;
            char __Name30;
            char __Name31;
            char __Name32;
            char __Name33;
            char __Name34;
            char __Name35;
            char __Name36;
            char __Name37;
            char __Name38;
            char __Name39;
            char __Name40;
            char __Name41;
            char __Name42;
            char __Name43;
            char __Name44;
            char __Name45;
            char __Name46;
            char __Name47;
            char __Name48;
            char __Name49;
            char __Name50;
            char __Name51;
            char __Name52;
            char __Name53;
            char __Name54;
            char __Name55;
            char __Name56;
            char __Name57;
            char __Name58;
            char __Name59;
            char __Name60;
            char __Name61;
            char __Name62;
            char __Name63;
            char __Name64;
            char __Name65;
            char __Name66;
            char __Name67;
            char __Name68;
            char __Name69;
            char __Name70;
            char __Name71;
            char __Name72;
            char __Name73;
            char __Name74;
            char __Name75;
            char __Name76;
            char __Name77;
            char __Name78;
            char __Name79;
            char __Name80;
            char __Name81;
            char __Name82;
            char __Name83;
            char __Name84;
            char __Name85;
            char __Name86;
            char __Name87;
            char __Name88;
            char __Name89;
            char __Name90;
            char __Name91;
            char __Name92;
            char __Name93;
            char __Name94;
            char __Name95;
            char __Name96;
            char __Name97;
            char __Name98;
            char __Name99;
            char __Name100;
            char __Name101;
            char __Name102;
            char __Name103;
            char __Name104;
            char __Name105;
            char __Name106;
            char __Name107;
            char __Name108;
            char __Name109;
            char __Name110;
            char __Name111;
            char __Name112;
            char __Name113;
            char __Name114;
            char __Name115;
            char __Name116;
            char __Name117;
            char __Name118;
            char __Name119;
            char __Name120;
            char __Name121;
            char __Name122;
            char __Name123;
            char __Name124;
            char __Name125;
            char __Name126;
            char __Name127;
            char __Name128;
            char __Name129;
            char __Name130;
            char __Name131;
            char __Name132;
            char __Name133;
            char __Name134;
            char __Name135;
            char __Name136;
            char __Name137;
            char __Name138;
            char __Name139;
            char __Name140;
            char __Name141;
            char __Name142;
            char __Name143;
            char __Name144;
            char __Name145;
            char __Name146;
            char __Name147;
            char __Name148;
            char __Name149;
            char __Name150;
            char __Name151;
            char __Name152;
            char __Name153;
            char __Name154;
            char __Name155;
            char __Name156;
            char __Name157;
            char __Name158;
            char __Name159;
            char __Name160;
            char __Name161;
            char __Name162;
            char __Name163;
            char __Name164;
            char __Name165;
            char __Name166;
            char __Name167;
            char __Name168;
            char __Name169;
            char __Name170;
            char __Name171;
            char __Name172;
            char __Name173;
            char __Name174;
            char __Name175;
            char __Name176;
            char __Name177;
            char __Name178;
            char __Name179;
            char __Name180;
            char __Name181;
            char __Name182;
            char __Name183;
            char __Name184;
            char __Name185;
            char __Name186;
            char __Name187;
            char __Name188;
            char __Name189;
            char __Name190;
            char __Name191;
            char __Name192;
            char __Name193;
            char __Name194;
            char __Name195;
            char __Name196;
            char __Name197;
            char __Name198;
            char __Name199;
            char __Name200;
            char __Name201;
            char __Name202;
            char __Name203;
            char __Name204;
            char __Name205;
            char __Name206;
            char __Name207;
            char __Name208;
            char __Name209;
            char __Name210;
            char __Name211;
            char __Name212;
            char __Name213;
            char __Name214;
            char __Name215;
            char __Name216;
            char __Name217;
            char __Name218;
            char __Name219;
            char __Name220;
            char __Name221;
            char __Name222;
            char __Name223;
            char __Name224;
            char __Name225;
            char __Name226;
            char __Name227;
            char __Name228;
            char __Name229;
            char __Name230;
            char __Name231;
            char __Name232;
            char __Name233;
            char __Name234;
            char __Name235;
            char __Name236;
            char __Name237;
            char __Name238;
            char __Name239;
            char __Name240;
            char __Name241;
            char __Name242;
            char __Name243;
            char __Name244;
            char __Name245;
            char __Name246;
            char __Name247;
            char __Name248;
            char __Name249;
            char __Name250;
            char __Name251;
            char __Name252;
            char __Name253;
            char __Name254;
            char __Name255;
            char __Name256;
            char __Name257;
            char __Name258;
            char __Name259;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Guid = @ref.Guid;
            this.Type = @ref.Type;
            this.StaticParameters = @ref.StaticParameters;
            this.DynamicParameters = @ref.DynamicParameters;
            fixed (char* __ptr = &@ref.Name) this.Name = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Guid = this.Guid;
            @ref.Type = this.Type;
            @ref.StaticParameters = this.StaticParameters;
            @ref.DynamicParameters = this.DynamicParameters;
            fixed (char* __psrc = this.Name) fixed (char* __ptr = &@ref.Name) Utilities.CopyMemory((IntPtr)__ptr, (IntPtr)__psrc, Name.Length * 2);
		
		}
    }
    
    /// <summary>	
    /// Used by theIDirectInputDevice8::CreateEffectmethod to initialize a newIDirectInputEffect Interfaceobject. It is also used by theIDirectInputEffect::SetParametersandIDirectInputEffect::GetParametersmethods.	
    /// </summary>	
    /// <remarks>	
    /// <table><tr><th>Note </th></tr><tr><td>The  <em>rglDirection</em> array must contain  <em>cAxes</em> entries, even if polar or spherical coordinates are given. In these cases, the last element in the  <em>rglDirection</em> array is reserved and must be 0. </td></tr></table>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
    /// <unmanaged>DIEFFECT</unmanaged>	
    /// <unmanaged-short>DIEFFECT</unmanaged-short>	
    public  partial class EffectParameters {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>DIEFF dwFlags</unmanaged>	
        /// <unmanaged-short>DIEFF dwFlags</unmanaged-short>	
        public SharpDX.DirectInput.EffectFlags Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwDuration']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int dwDuration</unmanaged>	
        /// <unmanaged-short>unsigned int dwDuration</unmanaged-short>	
        public int Duration;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwSamplePeriod']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int dwSamplePeriod</unmanaged>	
        /// <unmanaged-short>unsigned int dwSamplePeriod</unmanaged-short>	
        public int SamplePeriod;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwGain']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int dwGain</unmanaged>	
        /// <unmanaged-short>unsigned int dwGain</unmanaged-short>	
        public int Gain;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwTriggerButton']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int dwTriggerButton</unmanaged>	
        /// <unmanaged-short>unsigned int dwTriggerButton</unmanaged-short>	
        public int TriggerButton;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwTriggerRepeatInterval']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int dwTriggerRepeatInterval</unmanaged>	
        /// <unmanaged-short>unsigned int dwTriggerRepeatInterval</unmanaged-short>	
        public int TriggerRepeatInterval;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::cAxes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int cAxes</unmanaged>	
        /// <unmanaged-short>unsigned int cAxes</unmanaged-short>	
        internal int AxeCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::rgdwAxes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int* rgdwAxes</unmanaged>	
        /// <unmanaged-short>unsigned int rgdwAxes</unmanaged-short>	
        internal System.IntPtr AxePointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::rglDirection']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>int* rglDirection</unmanaged>	
        /// <unmanaged-short>int rglDirection</unmanaged-short>	
        internal System.IntPtr DirectionPointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::lpEnvelope']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>DIENVELOPE* lpEnvelope</unmanaged>	
        /// <unmanaged-short>DIENVELOPE lpEnvelope</unmanaged-short>	
        internal System.IntPtr EnvelopePointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::cbTypeSpecificParams']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int cbTypeSpecificParams</unmanaged>	
        /// <unmanaged-short>unsigned int cbTypeSpecificParams</unmanaged-short>	
        internal int TypeSpecificParamCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::lpvTypeSpecificParams']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>void* lpvTypeSpecificParams</unmanaged>	
        /// <unmanaged-short>void lpvTypeSpecificParams</unmanaged-short>	
        internal System.IntPtr TypeSpecificParamPointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIEFFECT::dwStartDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dieffect</msdn-id>	
        /// <unmanaged>unsigned int dwStartDelay</unmanaged>	
        /// <unmanaged-short>unsigned int dwStartDelay</unmanaged-short>	
        public int StartDelay;
    }
    
    /// <summary>	
    /// Used by theDIEFFECTstructure to specify the optional envelope parameters for an effect. The sustain level for the envelope is represented by the dwMagnitude member of theDIPERIODICstructure and the lMagnitude member of theDICONSTANTFORCEstructure. The sustain time is represented by dwDuration member of theDIEFFECTstructure.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIENVELOPE']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dienvelope</msdn-id>	
    /// <unmanaged>DIENVELOPE</unmanaged>	
    /// <unmanaged-short>DIENVELOPE</unmanaged-short>	
    public  partial class Envelope {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIENVELOPE::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dienvelope</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIENVELOPE::dwAttackLevel']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dienvelope</msdn-id>	
        /// <unmanaged>unsigned int dwAttackLevel</unmanaged>	
        /// <unmanaged-short>unsigned int dwAttackLevel</unmanaged-short>	
        public int AttackLevel;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIENVELOPE::dwAttackTime']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dienvelope</msdn-id>	
        /// <unmanaged>unsigned int dwAttackTime</unmanaged>	
        /// <unmanaged-short>unsigned int dwAttackTime</unmanaged-short>	
        public int AttackTime;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIENVELOPE::dwFadeLevel']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dienvelope</msdn-id>	
        /// <unmanaged>unsigned int dwFadeLevel</unmanaged>	
        /// <unmanaged-short>unsigned int dwFadeLevel</unmanaged-short>	
        public int FadeLevel;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIENVELOPE::dwFadeTime']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dienvelope</msdn-id>	
        /// <unmanaged>unsigned int dwFadeTime</unmanaged>	
        /// <unmanaged-short>unsigned int dwFadeTime</unmanaged-short>	
        public int FadeTime;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public int AttackLevel;
            public int AttackTime;
            public int FadeLevel;
            public int FadeTime;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.AttackLevel = @ref.AttackLevel;
            this.AttackTime = @ref.AttackTime;
            this.FadeLevel = @ref.FadeLevel;
            this.FadeTime = @ref.FadeTime;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.AttackLevel = this.AttackLevel;
            @ref.AttackTime = this.AttackTime;
            @ref.FadeLevel = this.FadeLevel;
            @ref.FadeTime = this.FadeTime;
		
		}
    }
    
    /// <summary>	
    /// Contains buffered device information. This structure is used with theIDirectInputDevice8::GetDeviceDataand theIDirectInputDevice8::SendDeviceDatamethods.	
    /// </summary>	
    /// <remarks>	
    /// <p>The system time returned in <em>dwTimeStamp</em> comes from the same clock used by the Microsoft Win32 GetTickCount or timeGetTime functions, but it produces potentially more precise values. For example, on Microsoft Windows 95, the GetTickCount timer is updated only every 55 milliseconds, but the <em>dwTimeStamp</em> value is accurate to within 1 millisecond. Therefore, if you call GetTickCount and it returns n, and you then receive an event with a timestamp of n + n1, you cannot assume that the event took place exactly n1 milliseconds after the call to GetTickCount.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTDATA']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectdata</msdn-id>	
    /// <unmanaged>DIDEVICEOBJECTDATA</unmanaged>	
    /// <unmanaged-short>DIDEVICEOBJECTDATA</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct ObjectData {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTDATA::dwOfs']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectdata</msdn-id>	
        /// <unmanaged>unsigned int dwOfs</unmanaged>	
        /// <unmanaged-short>unsigned int dwOfs</unmanaged-short>	
        public int Offset;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTDATA::dwData']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectdata</msdn-id>	
        /// <unmanaged>unsigned int dwData</unmanaged>	
        /// <unmanaged-short>unsigned int dwData</unmanaged-short>	
        public int Data;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTDATA::dwTimeStamp']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectdata</msdn-id>	
        /// <unmanaged>unsigned int dwTimeStamp</unmanaged>	
        /// <unmanaged-short>unsigned int dwTimeStamp</unmanaged-short>	
        internal int TimeStamp;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTDATA::dwSequence']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectdata</msdn-id>	
        /// <unmanaged>unsigned int dwSequence</unmanaged>	
        /// <unmanaged-short>unsigned int dwSequence</unmanaged-short>	
        internal int Sequence;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIDEVICEOBJECTDATA::uAppData']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dideviceobjectdata</msdn-id>	
        /// <unmanaged>UINT_PTR uAppData</unmanaged>	
        /// <unmanaged-short>UINT_PTR uAppData</unmanaged-short>	
        internal System.IntPtr AppDataPointer;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPCAL']/*"/>	
    /// <unmanaged>DIPROPCAL</unmanaged>	
    /// <unmanaged-short>DIPROPCAL</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct PropertyCalibration {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPCAL::diph']/*"/>	
        /// <unmanaged>DIPROPHEADER diph</unmanaged>	
        /// <unmanaged-short>DIPROPHEADER diph</unmanaged-short>	
        public SharpDX.DirectInput.PropertyHeader Header;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPCAL::lMin']/*"/>	
        /// <unmanaged>int lMin</unmanaged>	
        /// <unmanaged-short>int lMin</unmanaged-short>	
        public int Min;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPCAL::lCenter']/*"/>	
        /// <unmanaged>int lCenter</unmanaged>	
        /// <unmanaged-short>int lCenter</unmanaged-short>	
        public int Center;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPCAL::lMax']/*"/>	
        /// <unmanaged>int lMax</unmanaged>	
        /// <unmanaged-short>int lMax</unmanaged-short>	
        public int Max;
    }
    
    /// <summary>	
    /// Used to access properties whose values represent a globally unique identifier (<see cref="System.Guid"/>) and a path.	
    /// </summary>	
    /// <remarks>	
    /// <p>The diph member must be initialized as follows:</p> <table> <tr><th>Member 	
    /// </th><th>Value 	
    /// </th></tr> <tr><td> dwSize 	
    /// </td><td> sizeof(<see cref="SharpDX.DirectInput.PropertyGuidAndPath"/>). 	
    /// </td></tr> <tr><td> dwHeaderSize 	
    /// </td><td> sizeof(<see cref="SharpDX.DirectInput.PropertyHeader"/>). 	
    /// </td></tr> <tr><td> dwObj 	
    /// </td><td>For this structure, this member must be set to 0.	
    /// </td></tr> <tr><td> dwHow 	
    /// </td><td>Specifies how the  dwObj member should be interpreted. For this structure,  dwHow should be <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>. 	
    /// </td></tr> </table> <p>The <see cref="SharpDX.DirectInput.PropertyGuids.Guidandpath"/> property associated with the <see cref="SharpDX.DirectInput.PropertyGuidAndPath"/> structure enables advanced applications to perform operations on a Human Interface Device (human interface device) that are not supported by DirectInput.</p> <p>The application calls the <see cref="SharpDX.DirectInput.Device.GetProperty"/> method with <see cref="SharpDX.DirectInput.PropertyGuids.Guidandpath"/> as the rguidProp parameter. The class <see cref="System.Guid"/> of the device is returned in the guidClass member of the <see cref="SharpDX.DirectInput.PropertyGuidAndPath"/> structure, and the device interface path is returned in the wszPath member. The application can then call the CreateFile function on this path to access the device directly.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPGUIDANDPATH']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>	
    /// <unmanaged>DIPROPGUIDANDPATH</unmanaged>	
    /// <unmanaged-short>DIPROPGUIDANDPATH</unmanaged-short>	
    internal  partial struct PropertyGuidAndPath {	
        
        /// <summary>	
        /// <dd> <see cref="SharpDX.DirectInput.PropertyHeader"/> structure. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPGUIDANDPATH::diph']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>	
        /// <unmanaged>DIPROPHEADER diph</unmanaged>	
        /// <unmanaged-short>DIPROPHEADER diph</unmanaged-short>	
        public SharpDX.DirectInput.PropertyHeader Header;
        
        /// <summary>	
        /// <dd> Class <see cref="System.Guid"/> for the object.  </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPGUIDANDPATH::guidClass']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>	
        /// <unmanaged>GUID guidClass</unmanaged>	
        /// <unmanaged-short>GUID guidClass</unmanaged-short>	
        public System.Guid GuidClass;
        
        /// <summary>	
        /// <dd> Returned path for the object. This is a Unicode string.  </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPGUIDANDPATH::wszPath']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dipropguidandpath</msdn-id>	
        /// <unmanaged>wchar_t wszPath[260]</unmanaged>	
        /// <unmanaged-short>wchar_t wszPath</unmanaged-short>	
        public string Path;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public SharpDX.DirectInput.PropertyHeader Header;
            public System.Guid GuidClass;
            public char Path;
            char __Path1;
            char __Path2;
            char __Path3;
            char __Path4;
            char __Path5;
            char __Path6;
            char __Path7;
            char __Path8;
            char __Path9;
            char __Path10;
            char __Path11;
            char __Path12;
            char __Path13;
            char __Path14;
            char __Path15;
            char __Path16;
            char __Path17;
            char __Path18;
            char __Path19;
            char __Path20;
            char __Path21;
            char __Path22;
            char __Path23;
            char __Path24;
            char __Path25;
            char __Path26;
            char __Path27;
            char __Path28;
            char __Path29;
            char __Path30;
            char __Path31;
            char __Path32;
            char __Path33;
            char __Path34;
            char __Path35;
            char __Path36;
            char __Path37;
            char __Path38;
            char __Path39;
            char __Path40;
            char __Path41;
            char __Path42;
            char __Path43;
            char __Path44;
            char __Path45;
            char __Path46;
            char __Path47;
            char __Path48;
            char __Path49;
            char __Path50;
            char __Path51;
            char __Path52;
            char __Path53;
            char __Path54;
            char __Path55;
            char __Path56;
            char __Path57;
            char __Path58;
            char __Path59;
            char __Path60;
            char __Path61;
            char __Path62;
            char __Path63;
            char __Path64;
            char __Path65;
            char __Path66;
            char __Path67;
            char __Path68;
            char __Path69;
            char __Path70;
            char __Path71;
            char __Path72;
            char __Path73;
            char __Path74;
            char __Path75;
            char __Path76;
            char __Path77;
            char __Path78;
            char __Path79;
            char __Path80;
            char __Path81;
            char __Path82;
            char __Path83;
            char __Path84;
            char __Path85;
            char __Path86;
            char __Path87;
            char __Path88;
            char __Path89;
            char __Path90;
            char __Path91;
            char __Path92;
            char __Path93;
            char __Path94;
            char __Path95;
            char __Path96;
            char __Path97;
            char __Path98;
            char __Path99;
            char __Path100;
            char __Path101;
            char __Path102;
            char __Path103;
            char __Path104;
            char __Path105;
            char __Path106;
            char __Path107;
            char __Path108;
            char __Path109;
            char __Path110;
            char __Path111;
            char __Path112;
            char __Path113;
            char __Path114;
            char __Path115;
            char __Path116;
            char __Path117;
            char __Path118;
            char __Path119;
            char __Path120;
            char __Path121;
            char __Path122;
            char __Path123;
            char __Path124;
            char __Path125;
            char __Path126;
            char __Path127;
            char __Path128;
            char __Path129;
            char __Path130;
            char __Path131;
            char __Path132;
            char __Path133;
            char __Path134;
            char __Path135;
            char __Path136;
            char __Path137;
            char __Path138;
            char __Path139;
            char __Path140;
            char __Path141;
            char __Path142;
            char __Path143;
            char __Path144;
            char __Path145;
            char __Path146;
            char __Path147;
            char __Path148;
            char __Path149;
            char __Path150;
            char __Path151;
            char __Path152;
            char __Path153;
            char __Path154;
            char __Path155;
            char __Path156;
            char __Path157;
            char __Path158;
            char __Path159;
            char __Path160;
            char __Path161;
            char __Path162;
            char __Path163;
            char __Path164;
            char __Path165;
            char __Path166;
            char __Path167;
            char __Path168;
            char __Path169;
            char __Path170;
            char __Path171;
            char __Path172;
            char __Path173;
            char __Path174;
            char __Path175;
            char __Path176;
            char __Path177;
            char __Path178;
            char __Path179;
            char __Path180;
            char __Path181;
            char __Path182;
            char __Path183;
            char __Path184;
            char __Path185;
            char __Path186;
            char __Path187;
            char __Path188;
            char __Path189;
            char __Path190;
            char __Path191;
            char __Path192;
            char __Path193;
            char __Path194;
            char __Path195;
            char __Path196;
            char __Path197;
            char __Path198;
            char __Path199;
            char __Path200;
            char __Path201;
            char __Path202;
            char __Path203;
            char __Path204;
            char __Path205;
            char __Path206;
            char __Path207;
            char __Path208;
            char __Path209;
            char __Path210;
            char __Path211;
            char __Path212;
            char __Path213;
            char __Path214;
            char __Path215;
            char __Path216;
            char __Path217;
            char __Path218;
            char __Path219;
            char __Path220;
            char __Path221;
            char __Path222;
            char __Path223;
            char __Path224;
            char __Path225;
            char __Path226;
            char __Path227;
            char __Path228;
            char __Path229;
            char __Path230;
            char __Path231;
            char __Path232;
            char __Path233;
            char __Path234;
            char __Path235;
            char __Path236;
            char __Path237;
            char __Path238;
            char __Path239;
            char __Path240;
            char __Path241;
            char __Path242;
            char __Path243;
            char __Path244;
            char __Path245;
            char __Path246;
            char __Path247;
            char __Path248;
            char __Path249;
            char __Path250;
            char __Path251;
            char __Path252;
            char __Path253;
            char __Path254;
            char __Path255;
            char __Path256;
            char __Path257;
            char __Path258;
            char __Path259;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Header = @ref.Header;
            this.GuidClass = @ref.GuidClass;
            fixed (char* __ptr = &@ref.Path) this.Path = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Header = this.Header;
            @ref.GuidClass = this.GuidClass;
            fixed (char* __psrc = this.Path) fixed (char* __ptr = &@ref.Path) Utilities.CopyMemory((IntPtr)__ptr, (IntPtr)__psrc, Path.Length * 2);
		
		}
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPHEADER']/*"/>	
    /// <msdn-id>bb280498</msdn-id>	
    /// <unmanaged>DIPROPHEADER</unmanaged>	
    /// <unmanaged-short>DIPROPHEADER</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct PropertyHeader {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPHEADER::dwSize']/*"/>	
        /// <msdn-id>bb280498</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPHEADER::dwHeaderSize']/*"/>	
        /// <msdn-id>bb280498</msdn-id>	
        /// <unmanaged>unsigned int dwHeaderSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwHeaderSize</unmanaged-short>	
        public int HeaderSize;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPHEADER::dwObj']/*"/>	
        /// <msdn-id>bb280498</msdn-id>	
        /// <unmanaged>unsigned int dwObj</unmanaged>	
        /// <unmanaged-short>unsigned int dwObj</unmanaged-short>	
        public int Obj;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPHEADER::dwHow']/*"/>	
        /// <msdn-id>bb280498</msdn-id>	
        /// <unmanaged>DIPH dwHow</unmanaged>	
        /// <unmanaged-short>DIPH dwHow</unmanaged-short>	
        public SharpDX.DirectInput.PropertyHowType Type;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPDWORD']/*"/>	
    /// <msdn-id>bb280499</msdn-id>	
    /// <unmanaged>DIPROPDWORD</unmanaged>	
    /// <unmanaged-short>DIPROPDWORD</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct PropertyInt {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPDWORD::diph']/*"/>	
        /// <msdn-id>bb280499</msdn-id>	
        /// <unmanaged>DIPROPHEADER diph</unmanaged>	
        /// <unmanaged-short>DIPROPHEADER diph</unmanaged-short>	
        public SharpDX.DirectInput.PropertyHeader Header;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPDWORD::dwData']/*"/>	
        /// <msdn-id>bb280499</msdn-id>	
        /// <unmanaged>unsigned int dwData</unmanaged>	
        /// <unmanaged-short>unsigned int dwData</unmanaged-short>	
        public int Data;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPPOINTER']/*"/>	
    /// <msdn-id>bb280497</msdn-id>	
    /// <unmanaged>DIPROPPOINTER</unmanaged>	
    /// <unmanaged-short>DIPROPPOINTER</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct PropertyPointer {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPPOINTER::diph']/*"/>	
        /// <msdn-id>bb280497</msdn-id>	
        /// <unmanaged>DIPROPHEADER diph</unmanaged>	
        /// <unmanaged-short>DIPROPHEADER diph</unmanaged-short>	
        public SharpDX.DirectInput.PropertyHeader Header;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPPOINTER::uData']/*"/>	
        /// <msdn-id>bb280497</msdn-id>	
        /// <unmanaged>UINT_PTR uData</unmanaged>	
        /// <unmanaged-short>UINT_PTR uData</unmanaged-short>	
        public System.IntPtr Data;
    }
    
    /// <summary>	
    /// Contains information about the range of an object within a device. This structure is used with the <see cref="SharpDX.DirectInput.PropertyGuids.Range"/> flag set in theIDirectInputDevice8::GetPropertyandIDirectInputDevice8::SetPropertymethods.	
    /// </summary>	
    /// <remarks>	
    /// <p>The diph member must be initialized as follows:</p> <table> <tr><th>Member	
    /// </th><th>Value	
    /// </th></tr> <tr><td> dwSize 	
    /// </td><td> sizeof(<see cref="SharpDX.DirectInput.PropertyRange"/>) 	
    /// </td></tr> <tr><td> dwHeaderSize 	
    /// </td><td> sizeof(<see cref="SharpDX.DirectInput.PropertyHeader"/>) 	
    /// </td></tr> <tr><td> dwObj 	
    /// </td><td><p>If the dwHow member is <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>, this member must be 0.</p> <p>If the dwHow member is <see cref="SharpDX.DirectInput.PropertyHowType.Byid"/>, this member must be the identifier for the object whose property setting is to be set or retrieved. </p> <p>If the dwHow member is <see cref="SharpDX.DirectInput.PropertyHowType.Byoffset"/>, this member must be a data format offset for the object whose property setting is to be set or retrieved. For example, if the c_dfDIMouse data format is selected, it must be one of the DIMOFS_* values.Identifier of the object whose property is being retrieved or set. </p> <p>If the dwHow member is <see cref="SharpDX.DirectInput.PropertyHowType.Byusage"/>, the device must be a Human Interface Device (human interface device). The device object will be identified by the HID usage page and usage values in packed form. </p> </td></tr> <tr><td> dwHow 	
    /// </td><td>Specifies how the  dwObj member should be interpreted. See the preceding description of the  dwObj member for details.	
    /// </td></tr> </table> <p>The range values for devices whose ranges are unrestricted wraparound.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPRANGE']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.diproprange</msdn-id>	
    /// <unmanaged>DIPROPRANGE</unmanaged>	
    /// <unmanaged-short>DIPROPRANGE</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct PropertyRange {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPRANGE::diph']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diproprange</msdn-id>	
        /// <unmanaged>DIPROPHEADER diph</unmanaged>	
        /// <unmanaged-short>DIPROPHEADER diph</unmanaged-short>	
        public SharpDX.DirectInput.PropertyHeader Header;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPRANGE::lMin']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diproprange</msdn-id>	
        /// <unmanaged>int lMin</unmanaged>	
        /// <unmanaged-short>int lMin</unmanaged-short>	
        public int Min;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPRANGE::lMax']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diproprange</msdn-id>	
        /// <unmanaged>int lMax</unmanaged>	
        /// <unmanaged-short>int lMax</unmanaged-short>	
        public int Max;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPSTRING']/*"/>	
    /// <msdn-id>bb280495</msdn-id>	
    /// <unmanaged>DIPROPSTRING</unmanaged>	
    /// <unmanaged-short>DIPROPSTRING</unmanaged-short>	
    internal  partial struct PropertyString {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPSTRING::diph']/*"/>	
        /// <msdn-id>bb280495</msdn-id>	
        /// <unmanaged>DIPROPHEADER diph</unmanaged>	
        /// <unmanaged-short>DIPROPHEADER diph</unmanaged-short>	
        public SharpDX.DirectInput.PropertyHeader Header;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPROPSTRING::wsz']/*"/>	
        /// <msdn-id>bb280495</msdn-id>	
        /// <unmanaged>wchar_t wsz[260]</unmanaged>	
        /// <unmanaged-short>wchar_t wsz</unmanaged-short>	
        public string Text;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public SharpDX.DirectInput.PropertyHeader Header;
            public char Text;
            char __Text1;
            char __Text2;
            char __Text3;
            char __Text4;
            char __Text5;
            char __Text6;
            char __Text7;
            char __Text8;
            char __Text9;
            char __Text10;
            char __Text11;
            char __Text12;
            char __Text13;
            char __Text14;
            char __Text15;
            char __Text16;
            char __Text17;
            char __Text18;
            char __Text19;
            char __Text20;
            char __Text21;
            char __Text22;
            char __Text23;
            char __Text24;
            char __Text25;
            char __Text26;
            char __Text27;
            char __Text28;
            char __Text29;
            char __Text30;
            char __Text31;
            char __Text32;
            char __Text33;
            char __Text34;
            char __Text35;
            char __Text36;
            char __Text37;
            char __Text38;
            char __Text39;
            char __Text40;
            char __Text41;
            char __Text42;
            char __Text43;
            char __Text44;
            char __Text45;
            char __Text46;
            char __Text47;
            char __Text48;
            char __Text49;
            char __Text50;
            char __Text51;
            char __Text52;
            char __Text53;
            char __Text54;
            char __Text55;
            char __Text56;
            char __Text57;
            char __Text58;
            char __Text59;
            char __Text60;
            char __Text61;
            char __Text62;
            char __Text63;
            char __Text64;
            char __Text65;
            char __Text66;
            char __Text67;
            char __Text68;
            char __Text69;
            char __Text70;
            char __Text71;
            char __Text72;
            char __Text73;
            char __Text74;
            char __Text75;
            char __Text76;
            char __Text77;
            char __Text78;
            char __Text79;
            char __Text80;
            char __Text81;
            char __Text82;
            char __Text83;
            char __Text84;
            char __Text85;
            char __Text86;
            char __Text87;
            char __Text88;
            char __Text89;
            char __Text90;
            char __Text91;
            char __Text92;
            char __Text93;
            char __Text94;
            char __Text95;
            char __Text96;
            char __Text97;
            char __Text98;
            char __Text99;
            char __Text100;
            char __Text101;
            char __Text102;
            char __Text103;
            char __Text104;
            char __Text105;
            char __Text106;
            char __Text107;
            char __Text108;
            char __Text109;
            char __Text110;
            char __Text111;
            char __Text112;
            char __Text113;
            char __Text114;
            char __Text115;
            char __Text116;
            char __Text117;
            char __Text118;
            char __Text119;
            char __Text120;
            char __Text121;
            char __Text122;
            char __Text123;
            char __Text124;
            char __Text125;
            char __Text126;
            char __Text127;
            char __Text128;
            char __Text129;
            char __Text130;
            char __Text131;
            char __Text132;
            char __Text133;
            char __Text134;
            char __Text135;
            char __Text136;
            char __Text137;
            char __Text138;
            char __Text139;
            char __Text140;
            char __Text141;
            char __Text142;
            char __Text143;
            char __Text144;
            char __Text145;
            char __Text146;
            char __Text147;
            char __Text148;
            char __Text149;
            char __Text150;
            char __Text151;
            char __Text152;
            char __Text153;
            char __Text154;
            char __Text155;
            char __Text156;
            char __Text157;
            char __Text158;
            char __Text159;
            char __Text160;
            char __Text161;
            char __Text162;
            char __Text163;
            char __Text164;
            char __Text165;
            char __Text166;
            char __Text167;
            char __Text168;
            char __Text169;
            char __Text170;
            char __Text171;
            char __Text172;
            char __Text173;
            char __Text174;
            char __Text175;
            char __Text176;
            char __Text177;
            char __Text178;
            char __Text179;
            char __Text180;
            char __Text181;
            char __Text182;
            char __Text183;
            char __Text184;
            char __Text185;
            char __Text186;
            char __Text187;
            char __Text188;
            char __Text189;
            char __Text190;
            char __Text191;
            char __Text192;
            char __Text193;
            char __Text194;
            char __Text195;
            char __Text196;
            char __Text197;
            char __Text198;
            char __Text199;
            char __Text200;
            char __Text201;
            char __Text202;
            char __Text203;
            char __Text204;
            char __Text205;
            char __Text206;
            char __Text207;
            char __Text208;
            char __Text209;
            char __Text210;
            char __Text211;
            char __Text212;
            char __Text213;
            char __Text214;
            char __Text215;
            char __Text216;
            char __Text217;
            char __Text218;
            char __Text219;
            char __Text220;
            char __Text221;
            char __Text222;
            char __Text223;
            char __Text224;
            char __Text225;
            char __Text226;
            char __Text227;
            char __Text228;
            char __Text229;
            char __Text230;
            char __Text231;
            char __Text232;
            char __Text233;
            char __Text234;
            char __Text235;
            char __Text236;
            char __Text237;
            char __Text238;
            char __Text239;
            char __Text240;
            char __Text241;
            char __Text242;
            char __Text243;
            char __Text244;
            char __Text245;
            char __Text246;
            char __Text247;
            char __Text248;
            char __Text249;
            char __Text250;
            char __Text251;
            char __Text252;
            char __Text253;
            char __Text254;
            char __Text255;
            char __Text256;
            char __Text257;
            char __Text258;
            char __Text259;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Header = @ref.Header;
            fixed (char* __ptr = &@ref.Text) this.Text = SharpDX.Utilities.PtrToStringUni((IntPtr)__ptr, 260);
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Header = this.Header;
            fixed (char* __psrc = this.Text) fixed (char* __ptr = &@ref.Text) Utilities.CopyMemory((IntPtr)__ptr, (IntPtr)__psrc, Text.Length * 2);
		
		}
    }
    
    /// <summary>	
    /// Contains type-specific information for effects that are marked as <see cref="SharpDX.DirectInput.EffectType.ConstantForce"/>.<p>The structure describes a constant force effect.</p><p>A reference to a single <see cref="SharpDX.DirectInput.RawConstantForce"/> structure for an effect is passed in the lpvTypeSpecificParams member of the <see cref="SharpDX.DirectInput.EffectParameters"/> structure.</p>	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONSTANTFORCE']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.diconstantforce</msdn-id>	
    /// <unmanaged>DICONSTANTFORCE</unmanaged>	
    /// <unmanaged-short>DICONSTANTFORCE</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct RawConstantForce {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICONSTANTFORCE::lMagnitude']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.diconstantforce</msdn-id>	
        /// <unmanaged>int lMagnitude</unmanaged>	
        /// <unmanaged-short>int lMagnitude</unmanaged-short>	
        public int Magnitude;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICUSTOMFORCE']/*"/>	
    /// <msdn-id>bb280512</msdn-id>	
    /// <unmanaged>DICUSTOMFORCE</unmanaged>	
    /// <unmanaged-short>DICUSTOMFORCE</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct RawCustomForce {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICUSTOMFORCE::cChannels']/*"/>	
        /// <msdn-id>bb280512</msdn-id>	
        /// <unmanaged>unsigned int cChannels</unmanaged>	
        /// <unmanaged-short>unsigned int cChannels</unmanaged-short>	
        public int Channels;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICUSTOMFORCE::dwSamplePeriod']/*"/>	
        /// <msdn-id>bb280512</msdn-id>	
        /// <unmanaged>unsigned int dwSamplePeriod</unmanaged>	
        /// <unmanaged-short>unsigned int dwSamplePeriod</unmanaged-short>	
        public int SamplePeriod;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICUSTOMFORCE::cSamples']/*"/>	
        /// <msdn-id>bb280512</msdn-id>	
        /// <unmanaged>unsigned int cSamples</unmanaged>	
        /// <unmanaged-short>unsigned int cSamples</unmanaged-short>	
        public int Samples;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DICUSTOMFORCE::rglForceData']/*"/>	
        /// <msdn-id>bb280512</msdn-id>	
        /// <unmanaged>int* rglForceData</unmanaged>	
        /// <unmanaged-short>int rglForceData</unmanaged-short>	
        public System.IntPtr ForceDataPointer;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPERIODIC']/*"/>	
    /// <msdn-id>bb280501</msdn-id>	
    /// <unmanaged>DIPERIODIC</unmanaged>	
    /// <unmanaged-short>DIPERIODIC</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct RawPeriodicForce {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPERIODIC::dwMagnitude']/*"/>	
        /// <msdn-id>bb280501</msdn-id>	
        /// <unmanaged>unsigned int dwMagnitude</unmanaged>	
        /// <unmanaged-short>unsigned int dwMagnitude</unmanaged-short>	
        public int Magnitude;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPERIODIC::lOffset']/*"/>	
        /// <msdn-id>bb280501</msdn-id>	
        /// <unmanaged>int lOffset</unmanaged>	
        /// <unmanaged-short>int lOffset</unmanaged-short>	
        public int Offset;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPERIODIC::dwPhase']/*"/>	
        /// <msdn-id>bb280501</msdn-id>	
        /// <unmanaged>unsigned int dwPhase</unmanaged>	
        /// <unmanaged-short>unsigned int dwPhase</unmanaged-short>	
        public int Phase;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIPERIODIC::dwPeriod']/*"/>	
        /// <msdn-id>bb280501</msdn-id>	
        /// <unmanaged>unsigned int dwPeriod</unmanaged>	
        /// <unmanaged-short>unsigned int dwPeriod</unmanaged-short>	
        public int Period;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIRAMPFORCE']/*"/>	
    /// <msdn-id>bb280494</msdn-id>	
    /// <unmanaged>DIRAMPFORCE</unmanaged>	
    /// <unmanaged-short>DIRAMPFORCE</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    internal  partial struct RawRampForce {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIRAMPFORCE::lStart']/*"/>	
        /// <msdn-id>bb280494</msdn-id>	
        /// <unmanaged>int lStart</unmanaged>	
        /// <unmanaged-short>int lStart</unmanaged-short>	
        public int Start;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DIRAMPFORCE::lEnd']/*"/>	
        /// <msdn-id>bb280494</msdn-id>	
        /// <unmanaged>int lEnd</unmanaged>	
        /// <unmanaged-short>int lEnd</unmanaged-short>	
        public int End;
    }
}
